使用熊猫用索引值替换零

时间:2021-07-05 08:58:20

标签: python pandas dataframe

我有一个数据框 df1:

    ref   Name   id  Score
4  8400   John    0     12
8  3840  Peter  414      0
15 7400  David  612     64
24 5200  Karen    0      0

我想用同一行的他们的索引(4,24)的值替换id列中的0所以它会变成:

   ref    Name   id   Score
  8400   John  4       12
  3840  Peter  414      0
  7400  David  612     64
  5200  Karen  24      0

然后我想将它与基于 id 值的另一个 df 进行比较,所以之后我需要再次删除放在 id 中的索引值。为了回到列id

的初始值

最终输出将是:

     ref    Name   id   Score   best_id
      8400   John   0     12    8734
      3840  Peter  414    0    7364
      7400  David  612    64    4367
      5200  Karen   0     0     3467

更新:这是df ref

    Name      ID
    John     8734
    Peter   7364
    David    4367
    Karen    3467

2 个答案:

答案 0 :(得分:1)

我认为你应该看看df.mask()

>>> df['id'].mask(df['id'] == 0, df.index.to_series())
4       4
8     414
15    612
24     24
Name: id, dtype: int64

然后您可以将其分配给 df['id'] 或将 inplace=True 传递给掩码函数。

答案 1 :(得分:0)

  • 使用 pandas.DataFrame.apply 为您想要的内容创建一个新列:
    df['new_id'] = df.apply(lambda row: row.id or row.name, axis=1)
    
  • 使用新列与另一列进行比较。
  • 如果您不再需要新列,请使用 pandas.DataFrame.drop 删除它。
    df.drop(columns=['new_id'], inplace=True)