此问题与使用字典进行映射/查找创建新列的帖子有关。 (Adding a new pandas column with mapped value from a dictionary和pandas - 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']
过去几天我一直被困在圈子里。任何帮助/反馈将不胜感激!
答案 0 :(得分:0)
好的解决了这个问题之后..我猜pd.merge最有意义。