首页 > 解决方案 > 将系列中的值映射到列上以替换 nan 值 pandas

问题描述

我有一个 DataFrame,其中包含工作编号和与该工作相关的客户姓名。在某些情况下,工作编号没有客户名称,因此为空。我有一个单独的系列,其中将这些工作编号作为索引,缺少的客户姓名根据工作编号替换空值。我不完全确定如何将其映射到原始 DataFrame 列。

这是原始数据帧(df):

   Job Number  Customer 
0    02123      Paul F
1    46456      nan
2    56823      Kevin T
3    62948      nan

替换 nan 值的系列:

Job Number
  46456     Kara L
  62948     Sabrina M
  Name: Customers, dtype: object

我需要的最终输出是:

   Job Number  Customer 
0    02123      Paul F
1    46456      Kara L
2    56823      Kevin T
3    62948      Sabrina M

我希望这是有道理的。我看过其他答案,例如 using:df['Customer'] = df['Job Number'].map(customers)但这不起作用或test['Customer'] = df['Customer'].combine_first(df['Customer'].map(customers)).

我不确定如何将代码粘贴到这里,所以我手工写出了 df 和 series。

任何帮助将不胜感激。

标签: pythonpandasdataframeseries

解决方案


您可以reset_index使用combine_first

(df.set_index('JobNumber').squeeze()
   .combine_first(customers.set_index('Job').squeeze())
   .reset_index())

       index  Customer
    0   2123     Paul F
    1  46456     Kara L
    2  56823    Kevin T
    3  62948  Sabrina M

推荐阅读