假设我有以下DataFrame:
df = pd.DataFrame({'city': ['a', 'a', 'a', 'b', 'b', 'c', 'd', 'd', 'd'],
'year': [2013, 2014, 2016, 2015, 2016, 2013, 2016, 2017, 2018],
'value': [10, 12, 16, 20, 21, 11, 15, 13, 16]})
我希望找到每个城市和年份相对于前一年价值的百分比变化率。我的最终数据框应该是这样的:
city year value
a 2013 NaN
a 2014 0.20
a 2016 NaN
b 2015 NaN
b 2016 0.05
c 2013 NaN
d 2016 NaN
d 2017 -0.14
d 2018 0.23
我尝试在城市中使用一个组并使用apply,但它没有起作用:
df.groupby('city').apply(lambda x: x.sort_values('year')['value'].pct_change()).reset_index()
由于我无法获取年份,而且这种方式认为我拥有所有城市的所有年份,但实际上并非如此,所以它没有起作用。
编辑:我不太担心效率,因此任何解决问题的方案对我都是有效的。
pandas
。 - cwallenpoole