[英]Python Pandas: Conditional subraction of data between two dataframes?
我正在嘗試在兩個數據幀之間使用條件減法。
數據框df1
具有列名稱,並且price.name
不是唯一的。
>>df1
name price
0 mark 50
1 mark 200
2 john 10
3 chris 500
另一個數據框有兩列name
和paid
,這里name
是唯一的
>>df2
name paid
0 mark 150
1 john 10
如何有條件地減去兩個數據幀以獲得以下輸出
預期最終產出
name price paid
0 mark 50 50
1 mark 200 100
2 john 10 10
3 chris 500 0
IIUC,您可以使用:
# mapper for paid values
s = df2.set_index('name')['paid']
df1['paid'] = (df1
.groupby('name')['price'] # for each name
.apply(lambda g: g.cumsum() # sum the total owed
.clip(upper=s.get(g.name, default=0)) # in the limit of the paid
.pipe(lambda s: s.diff().fillna(s)) # compute reverse cumsum
)
)
輸出:
name price paid
0 mark 50 50.0
1 mark 200 100.0
2 john 10 10.0
3 chris 500 0.0
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.