我想在dataframe中舍入金额2的舍入差额。由于不同的用户插入的金额不同,因此,金额2的差异是正常的,因此我希望合并。例如
dataframe_1
item Amount
A 100
B 100
A 40
dataframe_2
item Amount
A 98
B 102
A 35
当前,当我合并.merge(how='outer', indicator=True, on=['item', 'Amount'])
时,合并数据帧中什么也没有。
所需的输出:
item Amount item Amount _merge
A 100 A 98 both
B 100 B 102 both
A 40 left_only
A 35 right_only
所以我需要+2和-2的差来匹配
分析解答
在df1中创建一个名为“ in_margin”的True/False列。将其复制到df2,将False替换为其他内容(例如负数),然后进行外部联接并删除in_margin列。
df1['in_margin'] = df1['Amount'].between(df2['Amount']-2, df2['Amount']+2)
df2['in_margin'] = df1['in_margin'].replace(False, -999)
df1.merge(df2, on=['item','in_margin'], how='outer', indicator=True).drop(columns='in_margin')
输出量
item Amount_x Amount_y _merge
0 A 100.0 98.0 both
1 B 100.0 102.0 both
2 A 40.0 NaN left_only
3 A NaN 35.0 right_only