python - 大熊猫在行之间移动增量
问题描述
我有一个看起来像这样的数据框:
Area Sector Date Amt
FICC GOV 31/01/2019 100
EQ CORP 31/01/2019 50
FICC GOV 31/03/2019 200
EQ CORP 31/03/2019 100
FICC GOV 31/12/2018 50
EQ CORP 31/12/2018 25
我想根据日期获取增量。所以我期待的输出是
Area Sector Date Amt Delta
FICC GOV 31/12/2018 50
EQ CORP 31/12/2018 25
FICC GOV 31/01/2019 100 50
EQ CORP 31/01/2019 50 25
FICC GOV 31/03/2019 200 100
EQ CORP 31/03/2019 100 50
pandas 有没有一种有效的方法来实现上述目标?
解决方案
sort
日期,然后groupby
+diff
import pandas as pd
df['Date'] = pd.to_datetime(df.Date)
df = df.sort_values('Date')
df['Delta'] = df.groupby(['Area', 'Sector']).Amt.diff()
Area Sector Date Amt Delta
4 FICC GOV 2018-12-31 50 NaN
5 EQ CORP 2018-12-31 25 NaN
0 FICC GOV 2019-01-31 100 50.0
1 EQ CORP 2019-01-31 50 25.0
2 FICC GOV 2019-03-31 200 100.0
3 EQ CORP 2019-03-31 100 50.0
推荐阅读
- jsf - 关于开放自由的 JSF 2.3。立即 javax.faces.application.ViewExpiredException
- javascript - 找不到模块“html-webpack-plguin”反应启动
- typescript - 错误:找不到模块“C:\XXX\XXX/config-overrides”
- vb.net - 如何在 vb.net 中使用 If .eof OR .bof 条件?
- alibaba-cloud - 如何从 ECS 实例中获取实例 ID?
- java - 如何使用不同的选择器直接从访问的元素中获取 XPATH
- windows - 恢复损坏的文件
- javascript - 动态创建的 div 上的 moment.js 会产生问题。最后一个时间线替换了所有其他以前的 div
- java - ConcurrentHashMap 中的 size() 和 mappingCount() 有什么区别?
- angular - 单击任何卡片时,在卡片的网格布局中插入额外的 div