将序列中的值映射到列以替换nan值

2024-09-27 04:30:12 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个数据框,其中包含作业编号和与该作业关联的客户名称。在某些情况下,作业编号没有客户名称,因此为空。 我有一个单独的系列,它将这些作业编号作为索引,并根据作业编号将缺少的客户名称替换为空值。我不完全确定如何将其映射到原始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

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

我不知道如何将代码粘贴到这里,所以我手工写出了df和系列

任何帮助都将不胜感激


Tags: 名称numbermapdf客户作业jobcustomer
2条回答

这里有必要按列Job Number使用map,而不是Customer

df['Customer'] = df['Customer'].combine_first(df['Job Number'].map(customers))
print (df)
   Job Number   Customer
0        2123     Paul F
1       46456     Kara L
2       56823    Kevin T
3       62948  Sabrina M

详细信息

print (df['Job Number'].map(customers))
0          NaN
1       Kara L
2          NaN
3    Sabrina M
Name: Job Number, dtype: object

您可以将reset_indexcombine_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

相关问题 更多 >

    热门问题