本文介绍了Pandas groupby 多列,使用 pct_change的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我试图找到每个唯一组的 Value
的期间内增长,按 (Company
, Group
, 和 Date
).
I'm trying to find the period-over-period growth in Value
for each unique group, grouped by (Company
, Group
, and Date
).
Company Group Date Value
A X 2015-01 1
A X 2015-02 2
A X 2015-03 1.5
A XX 2015-01 1
A XX 2015-02 1.5
A XX 2015-03 0.75
A XX 2015-04 1
B Y 2015-01 1
B Y 2015-02 1.5
B Y 2015-03 2
B Y 2015-04 3
B YY 2015-01 2
B YY 2015-02 2.5
B YY 2015-03 3
我试过了:
df.groupby(['Date','Company','Group']).pct_change()
但这会返回所有 NaN.
but this returns all NaN.
我正在寻找的结果是:
Company Group Date Value/People
A X 2015-01 NaN
A X 2015-02 1.0
A X 2015-03 -0.25
A XX 2015-01 NaN
A XX 2015-02 0.5
A XX 2015-03 -0.5
A XX 2015-04 0.33
B Y 2015-01 NaN
B Y 2015-02 0.5
B Y 2015-03 0.33
B Y 2015-04 0.5
B YY 2015-01 NaN
B YY 2015-02 0.25
B YY 2015-03 0.2
推荐答案
您希望将日期放入行索引并将组/公司放入列
you want to get your date into the row index and groups/company into the columns
d1 = df.set_index(['Date', 'Company', 'Group']).Value.unstack(['Company', 'Group'])
d1
然后使用pct_change
d1.pct_change()
或
使用 groupby
df['pct'] = df.sort_values('Date').groupby(['Company', 'Group']).Value.pct_change()
df
这篇关于Pandas groupby 多列,使用 pct_change的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!