如何通过特定变量在 pandas 数据框组中的行之间进行计算?

我有一个这样的数据框:


Time      Name     Value

2007Q1    A        30

2007Q2    A        35

2007Q3    A        28

...

2007Q1    B        31

2007Q2    B        50

2007Q3    B        60

...

2007Q1    C        20

2007Q2    C        15

2007Q3    C        30

我想添加另一个名为结果的列,并在每个名称的每一行之间执行计算。我想使用一个季度的值除以上一季度的值,然后减去 1,这类似于Value(Q2)/Value(Q1)-1。另外,我想按名称分组,只在具有相同名称的行内进行计算。结果应该是这样的:


Time      Name     Value    Results

2007Q1    A        30       

2007Q2    A        35       0.1667

2007Q3    A        28       -0.2

...

2007Q1    B        31       

2007Q2    B        50       0.6129

2007Q3    B        60       0.2

...

2007Q1    C        20

2007Q2    C        15       -0.25

2007Q3    C        30       1

每个“名称”的开始时间段不应具有结果值。


感谢所有能提供帮助的人!


猛跑小猪
浏览 100回答 1
1回答

芜湖不芜

使用DataFrame.groupbyonName并使用groupby.shift移动列Value然后使用Series.div将其除以Value,最后使用Series.sub减去1:df['Results'] = df['Value'].div(df.groupby('Name')['Value'].shift()).sub(1)结果:print(df)     Time Name  Value   Results0  2007Q1    A     30       NaN1  2007Q2    A     35  0.1666672  2007Q3    A     28 -0.2000003  2007Q1    B     31       NaN4  2007Q2    B     50  0.6129035  2007Q3    B     60  0.2000006  2007Q1    C     20       NaN7  2007Q2    C     15 -0.2500008  2007Q3    C     30  1.000000
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python