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

根据以新值重新启动的差异创建新列

根据以新值重新启动的差异创建新列

婷婷同学_ 2023-04-11 16:22:31
我目前正在使用 pandas 并且有一个 df 目前看起来像这样:     LOCATION   TIME   Value       0         AUS   2000   33.595673       1         AUS   2001   57.8623622         AUS   2002   58.5886083          UK   2000   61.74          UK   2001   63.2432325          UK   2002   66.235122我想添加另一列,列出值列中后续行之间的差异,但希望它在 LOCATION 更改时重新启动。所以基本上它应该在上面的例子中的第 2 行和第 3 行之间重新开始
查看完整描述

2 回答

?
喵喵时光机

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

 df['valuedif']=df[['LOCATION', 'TIME', 'Value']].groupby('LOCATION').Value.apply(lambda x: x.diff())

print(df)




  LOCATION  TIME      Value   valuedif

0      AUS  2000  33.595673        NaN

1      AUS  2001  57.862362  24.266689

2      AUS  2002  58.588608   0.726246

3       UK  2000  61.700000        NaN

4       UK  2001  63.243232   1.543232

5       UK  2002  66.235122   2.991890


查看完整回答
反对 回复 2023-04-11
?
牛魔王的故事

TA贡献1830条经验 获得超3个赞

如果我正确理解你在寻找什么,解决方案是:


df.groupby("LOCATION").diff()

输出是:


   TIME      Value

0   NaN        NaN

1   1.0  24.266689

2   1.0   0.726246

3   NaN        NaN

4   1.0   1.543232

5   1.0   2.991890


查看完整回答
反对 回复 2023-04-11
  • 2 回答
  • 0 关注
  • 83 浏览
慕课专栏
更多

添加回答

举报

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