通过针对单个列

时间:2018-04-09 01:08:39

标签: python pandas dictionary mapping

此问题与使用字典进行映射/查找创建新列的帖子有关。 (Adding a new pandas column with mapped value from a dictionarypandas - add new column to dataframe from dictionary)。但是,如果我想创建多个具有字典值的新列,该怎么办呢。

为了论证,让我们说我有以下df:

   country   
0  bolivia   
1  canada  
2  ghana    

在不同的数据框架中,我有国家/地区映射:

country   country_id   category  color
0  canada    11        north     red
1  bolivia   12        central   blue
2  ghana     13        south     green

我一直在使用pd.merge将映射数据框合并到我的df使用国家和另一个索引作为键它基本上完成了工作,这给了我想要的输出:

   country   country_id  category  color
0  bolivia   12          central   blue
1  canada    11          north     red
2  ghana     13          south     green

但是,最近,我一直想尝试使用字典。我想一个相关的问题是如何确定使用pd.merge或字典来完成我的任务。

对于我要映射的一次性列,我将通过映射到字典来创建新列:

country_dict = dict(zip(country, country_id))    
df['country_id'] = df['country'].map(entity_dict)

定义一个接收不同字典并分别创建每个新列的函数(例如dict(zip(key, value1)), dict(zip(key, value2)))似乎不切实际。我一直坚持如何继续创建多个列。我重新开始,尝试创建国家映射excel工作表作为字典:

entity_dict = entity.set_index('country').T.to_dict('list')

然后从那里将dict值转换为列:

entity_mapping = pd.DataFrame.from_dict(entity_dict, orient = 'index')
entity_mapping.columns = ['col1', 'col2', 'col3']

过去几天我一直被困在圈子里。任何帮助/反馈将不胜感激!

1 个答案:

答案 0 :(得分:0)

好的解决了这个问题之后..我猜pd.merge最有意义。