为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

猛跑小猪 2023-03-30 16:18:25
我有一个这样的数据框:Time      Name     Value2007Q1    A        302007Q2    A        352007Q3    A        28...2007Q1    B        312007Q2    B        502007Q3    B        60...2007Q1    C        202007Q2    C        152007Q3    C        30我想添加另一个名为结果的列,并在每个名称的每一行之间执行计算。我想使用一个季度的值除以上一季度的值,然后减去 1,这类似于Value(Q2)/Value(Q1)-1。另外,我想按名称分组,只在具有相同名称的行内进行计算。结果应该是这样的:Time      Name     Value    Results2007Q1    A        30       2007Q2    A        35       0.16672007Q3    A        28       -0.2...2007Q1    B        31       2007Q2    B        50       0.61292007Q3    B        60       0.2...2007Q1    C        202007Q2    C        15       -0.252007Q3    C        30       1每个“名称”的开始时间段不应具有结果值。感谢所有能提供帮助的人!
查看完整描述

1 回答

?
芜湖不芜

TA贡献1796条经验 获得超7个赞

使用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   Results

0  2007Q1    A     30       NaN

1  2007Q2    A     35  0.166667

2  2007Q3    A     28 -0.200000

3  2007Q1    B     31       NaN

4  2007Q2    B     50  0.612903

5  2007Q3    B     60  0.200000

6  2007Q1    C     20       NaN

7  2007Q2    C     15 -0.250000

8  2007Q3    C     30  1.000000


查看完整回答
反对 回复 2023-03-30
  • 1 回答
  • 0 关注
  • 99 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信