Python从字典键创建新列

3
我正在尝试学习使用Python进行数据科学,并遇到了以下问题。
假设我们有一个形式为数据框的数据:

enter image description here

以字典形式表示

    Regions = {“Central Asia”: [“Afghanistan”], 
“Europe”: [“Albania”, “Andorra”], 
“Africa”: [“Algeria”], 
“America”: [“American Samoa”]}

我想在数据框中创建一个新列,其中字典中的键是条目,就像这样:

enter image description here

有没有在Python中做这个好的方法?
谢谢你的帮助!!
2个回答

7

您可以使用 map 方法,将字典中的键和值进行对调:

d = {k: oldk for oldk, oldv in Regions.items() for k in oldv}
print (d)
{'Andorra': 'Europe', 'Afghanistan': 'Central Asia',
 'Algeria': 'Africa', 'American Samoa': 'America', 'Albania': 'Europe'}

df['Region'] = df['country'].map(d)
print (df)
          country        Region
0     Afghanistan  Central Asia
1         Albania        Europe
2         Algeria        Africa
3  American Samoa       America
4         Andorra        Europe

5
使用DataFrame.from_dictdf.stack()可编写一行代码(感谢MaxU!):
In [8]: pd.DataFrame.from_dict(Regions, orient='index').stack()\
                     .reset_index(level=0)\
                     .rename(columns={'level_0':'Region',0:'country'})\
                     .reset_index(drop=True)
Out[8]: 
         Region         country
0        Europe         Albania
1        Europe         Andorra
2        Africa         Algeria
3  Central Asia     Afghanistan
4       America  American Samoa

1
pd.DataFrame.from_dict(Regions, orient='index').stack().reset_index(level=0).rename(columns={'level_0':'Region',0:'country'}).reset_index(drop=True) 的翻译是什么? - MaxU - stand with Ukraine
@MaxU 谢谢你 :) 明显更好了。 - cs95

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接