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

我目前正在使用 pandas 并且有一个 df 目前看起来像这样:


     LOCATION   TIME   Value       

0         AUS   2000   33.595673       

1         AUS   2001   57.862362

2         AUS   2002   58.588608

3          UK   2000   61.7

4          UK   2001   63.243232

5          UK   2002   66.235122

我想添加另一列,列出值列中后续行之间的差异,但希望它在 LOCATION 更改时重新启动。所以基本上它应该在上面的例子中的第 2 行和第 3 行之间重新开始


婷婷同学_
浏览 115回答 2
2回答

喵喵时光机

 df['valuedif']=df[['LOCATION', 'TIME', 'Value']].groupby('LOCATION').Value.apply(lambda x: x.diff())print(df)  LOCATION  TIME      Value   valuedif0      AUS  2000  33.595673        NaN1      AUS  2001  57.862362  24.2666892      AUS  2002  58.588608   0.7262463       UK  2000  61.700000        NaN4       UK  2001  63.243232   1.5432325       UK  2002  66.235122   2.991890

牛魔王的故事

如果我正确理解你在寻找什么,解决方案是:df.groupby("LOCATION").diff()输出是:   TIME      Value0   NaN        NaN1   1.0  24.2666892   1.0   0.7262463   NaN        NaN4   1.0   1.5432325   1.0   2.991890
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python