如何基于另一个数据帧中的查找表替换数据帧中的值

2024-05-15 15:44:36 发布

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

我试图找出如何用查找表中的描述替换数据集中的占位符值

import pandas as pd

#Survey Data
df=pd.DataFrame({
                  'age':[653,653,654,653,653],
                  'cty':[1056,1056,1158,1158,1203],
                  'eth':[545,545,530,530,545]
                  })

    age  cty   eth
0   653  1056  NaN
1   653  1056  545
2   654  NaN   530
3   653  1158  530
4   653  1203  545

#Lookup table
lookup=pd.DataFrame({'category':['age', 'age', 'cty','cty', 'cty','eth','eth'], 
                     'value':[653,654,1056,1158,1203,545,530],
                     'description':['30 to 39','40 to 49','Belgium','Taiwan','Czech Republic',
                                     'White','Other']})

    category  value  description
0   age       653    30 to 39 
1   age       654    40 to 49
2   cty       1056   Belgium
3   cty       1158   Taiwan
4   cty       1203   Czech Republic
5   eth       545    White
6   eth       530    Other

因此,数据集中的每一列都与查找表中的一个类别相匹配。我想逐列进行匹配,匹配类别,然后匹配值,用每个类别的适当描述替换值。所以,它看起来像这样:

    age        cty             eth
0   30 to 39   Belgium         NaN
1   30 to 39   Belgium         White
2   40 to 49   NaN             Other
3   30 to 39   Taiwan          Other
4   30 to 39   Czech Republic  White

目前,我正在为每一列构建一个使用字典的解决方案,并对其进行映射,但这似乎非常笨拙,我必须为每一个类别创建一个单独的字典。当然,我应该能够查找类别,然后查找值来替换这些值


Tags: to数据dataframeagenan类别ethpd
1条回答
网友
1楼 · 发布于 2024-05-15 15:44:36

使用“replace方法:它将搜索数据帧中的键,并用关联的值替换找到的键。您的数据帧缺少几个NAN,因此我对其进行了编辑以匹配您发布的内容

  #create a dictionary from the lookup
  repl = lookup.set_index('value')['description'].to_dict()

  #print(repl)
  
  {653: '30 to 39',
   654: '40 to 49', 
   1056: 'Belgium', 
   1158: 'Taiwan', 
   1203: 'Czech Republic',
   545: 'White', 
   530: 'Other'}

  #pass it using pandas' replace method
  df.replace(repl)

  
      age         cty            eth
0   30 to 39    Belgium          NaN
1   30 to 39    Belgium          White
2   40 to 49    NaN               Other
3   30 to 39    Taiwan           Other
4   30 to 39    Czech Republic  White

相关问题 更多 >