pandas Python -根据行值对列执行计算

uqjltbpv  于 2023-03-06  发布在  Python
关注(0)|答案(1)|浏览(115)

我想在一个数据集中计算各国国内生产总值的年度百分比变化。该数据集的格式如下,每行对应一个国家的年度记录:
| 国家|年份|寿命|国内生产总值|
| - ------|- ------|- ------|- ------|
| 智利|二○ ○ ○年|七十七点三|7.79e+10|
| 智利|二○ ○ ○年|七十七点三|7.79e+10|
| ...|...|...|...|
| 津巴布韦|二〇一四年|五十九点二|1.59电子+10|
| 津巴布韦|二〇一五年|六十点七|1.63电子+10|
理想情况下,我希望循环遍历各行,如果该行中的国家与前一行相同,则计算两行之间GDP的百分比变化。
到目前为止,我不得不逐个遍历每个国家,并将其添加到一个新列GDP%中。我尝试将下面的代码放入一个循环中,并将国家名称作为一个变量(如下所示:'Chile'),但是没有用。

gdp_data['GDP%'] = 0
gdp_country = gdp_data[gdp_data['Country'] == 'Chile']
gdp_data['GDP%'] = gdp_country['GDP'].pct_change()

有(正确的)更有效的方法吗?

iqxoj9l9

iqxoj9l91#

这似乎与this question about group by and percent change类似
您希望首先按国家和年份排序,然后按组排序,最后应用.pct_change()
尝试类似于以下内容的操作:

gdp_data.sort_values(by=['Country', 'Year'], inplace=True, ascending = [True, True])
gdp_data['GDP_Percent_Change'] = gdp_data.groupby('Country')['GDP'].pct_change()

相关问题