首页 > 解决方案 > Pandas groupby.pct_change() 仅返回 0 和 nan

问题描述

我有一个数据集:

month      country       user
2018-01    DE            182503
2018-02    DE            168962
2018-03    DE            175043
2019-01    DE            158797
2019-01    DE            226209

我想查看连续行中的百分比变化,我正在使用pct_change()它,但我的输出仍然只包含 nan 或 0 或 -0。我想创建一个新列“pct_change”并将百分比变化存储到其中。

我的用户列是浮点类型。

截至目前,我的输出看起来像这样

month      country       user    pct_change
2018-01    DE            182503  nan
2018-02    DE            168962  -0
2018-03    DE            175043   0

我正在使用以下代码:

df['pct_change'] = df.groupby(['country'])['user'].pct_change()

为什么我没有看到正确的结果?

标签: python-3.xpandaspandas-groupby

解决方案


这只是一个四舍五入的问题吗?

pd.options.display.float_format = '{:,.4f}'.format 
df['pct_change'] = df.groupby(['country'])['user'].pct_change()

df
Out[101]: 
     month country    user  pct_change
0  2018-01      DE  182503         NaN
1  2018-02      DE  168962     -0.0742
2  2018-03      DE  175043      0.0360

推荐阅读