Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/345.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 迭代后合并组_Python_Pandas_Dataframe_Pandas Groupby - Fatal编程技术网

Python 迭代后合并组

Python 迭代后合并组,python,pandas,dataframe,pandas-groupby,Python,Pandas,Dataframe,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 我想计算每个国家在不同年份之间的百分比变化,因此我按国家分组并按组迭代: grouped=df.g

我有一个包含国家和年份值的数据框架:

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
我想计算每个国家在不同年份之间的百分比变化,因此我按国家分组并按组迭代:

grouped=df.groupBy('country')
for group in grouped:
    group['pct']=group['value'].pct_change(periods=1)*100

如何从包含新列的“分组”中创建新的数据框
pct

只需将代码放入函数并使用
apply

def f(group):
    group['pct']=group['value'].pct_change(periods=1)*100
    return group    
print df.groupby('country').apply(f)
输出:

  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