[英]Python Pandas: Conditional subraction of data between two dataframes?
I'm trying to use conditional subtraction between two dataframes.我正在尝试在两个数据帧之间使用条件减法。
Dataframe df1
has columns name and price.name
is not unique.数据框df1
具有列名称,并且price.name
不是唯一的。
>>df1
name price
0 mark 50
1 mark 200
2 john 10
3 chris 500
Another dataframe has two columns name
and paid
, Here name
is unique另一个数据框有两列name
和paid
,这里name
是唯一的
>>df2
name paid
0 mark 150
1 john 10
How can I conditionally subtract both dataframes to get following output如何有条件地减去两个数据帧以获得以下输出
Final Output expected预期最终产出
name price paid
0 mark 50 50
1 mark 200 100
2 john 10 10
3 chris 500 0
IIUC, you can use: 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
)
)
output:输出:
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.