我有一个DataFrame
df1
,其中ID
和Amount
在特定的Dates
上。我试图对具有相同ID
值的两个特定行的Amount
求和。
df1:
Date ID Amount
0 2022-01-02 1200 10.0
1 2022-01-02 1200 1.0
2 2022-01-02 1400 12.0
3 2022-01-02 1500 11.0
4 2022-01-03 1300 12.5
5 2022-01-03 1300 0.5
6 2022-01-03 1500 12.0
这将是所需的输出:
df1:
Date ID Amount
0 2022-01-02 1200 11 <-- 10+1
1 2022-01-02 1200 0 <-- -1
2 2022-01-02 1400 12
3 2022-01-02 1500 11
4 2022-01-03 1300 13 <-- 12.5+0.5
5 2022-01-03 1300 0 <-- -0.5
6 2022-01-03 1500 12
我尝试使用np.where()
来替换Amount
,其中shifted
ID
值等于ID
值。
再现性:
import pandas as pd
df1 = pd.DataFrame({
'Date':['2022-01-02', '2022-01-02', '2022-01-02', '2022-01-02', '2022-01-03', '2022-01-03', '2022-01-03'],
'ID':[1200, 1200, 1400, 1500, 1300, 1300, 1500],
'Amount':[10, 1, 12, 11, 12.5, 0.5, 12]})
非常感谢您的帮助!
2条答案
按热度按时间tzxcd3kk1#
如果我没理解错您的问题,它看起来像是一个事务数据,您需要按[Date,ID]分组。
如果是这样,则可以通过以下方式实现:
完整示例。我在数据集的末尾添加了一些额外的数据,只是为了测试超过2个条目的拐角条件:
e3bfsja22#
让我们试试下面的代码:
输出