use*_*695 4 python dataframe pandas pandas-groupby
我有一个包含国家和年份值的数据框:
country year value
US 2000 20
JP 2000 10
AU 2000 5
US 2001 22
JP 2001 12
AU 2001 6
US 2002 23
JP 2002 14
AU 2002 8
Run Code Online (Sandbox Code Playgroud)
我想计算每个国家在年份之间的百分比变化,所以我按国家分组并按组迭代:
grouped=df.groupBy('country')
for group in grouped:
group['pct']=group['value'].pct_change(periods=1)*100
Run Code Online (Sandbox Code Playgroud)
如何从包含我的新列的“分组”创建新数据框pct?
只需将您的代码放在一个函数中并使用apply:
def f(group):
group['pct']=group['value'].pct_change(periods=1)*100
return group
print df.groupby('country').apply(f)
Run Code Online (Sandbox Code Playgroud)
输出:
country year value pct
0 US 2000 20 NaN
1 JP 2000 10 NaN
2 AU 2000 5 NaN
3 US 2001 22 10.000000
4 JP 2001 12 20.000000
5 AU 2001 6 20.000000
6 US 2002 23 4.545455
7 JP 2002 14 16.666667
8 AU 2002 8 33.333333
Run Code Online (Sandbox Code Playgroud)