har*_*kin 3 python dataframe pandas
我正在尝试使用Python进行数据科学学习并遇到以下问题.
假设我们有一个表单的数据框
和形式的字典
Regions = {“Central Asia”: [“Afghanistan”],
“Europe”: [“Albania”, “Andorra”],
“Africa”: [“Algeria”],
“America”: [“American Samoa”]}
Run Code Online (Sandbox Code Playgroud)
我想在数据框中创建一个新列,该字典中的键是条目,如下所示:
有没有一种很好的方法在Python中执行此操作?
谢谢你的帮助!!
你可以用map与dict在哪里换键与值:
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
Run Code Online (Sandbox Code Playgroud)
一根班轮使用DataFrame.from_dict和df.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
Run Code Online (Sandbox Code Playgroud)