首页 > 解决方案 > 从另一行替换值与另一列上的值匹配?

问题描述

我有一个看起来像这样的数据框 df1:

   INV  AMOUNT     Match
1   A   36.85      NaN
2   B   289.84     NaN
3   C   -96.75     B
4   D   -36.85     A

我想用 AMOUNT 的绝对值替换 AMOUNT 列的值,其中 MATCH 与 INV 相同。

它应该看起来像这样,只有第 2 行应该改变。

   INV  AMOUNT     Match
1   A   36.85      NaN
2   B   *96.75*    NaN
3   C   -96.75     B
4   D   -36.85     A

换一种方式,

如果我有df1:

   INV  AMOUNT     
1   A   36.85     
2   B   289.84    
3   C   -96.75   
4   D   -36.85

和df2:

    Match   MONEY
1   NaN     36.85
2   NaN     289.84
3   A       -96.75
4   B       -36.85

将 df1 的 AMOUNT 替换为 df2 中 MONEY 列的绝对值,其中 INV 与 df2 中的 Match 列匹配。

df1 应如下所示:

   INV  AMOUNT     
1   A   36.85     
2   B   96.75    
3   C   -96.75   
4   D   -36.85

标签: pythonpandaslookup

解决方案


您想合并两个数据框

df1.merge(df2, left_on='AMOUNT', right_on='MONEY').drop('MONEY',axis=1)

两个数据框将在“MONEY”和“AMOUNT” abs 值相同的所有位置合并,并且 drop 函数将为您删除公共列


推荐阅读