2017-07-31 170 views
2

我正在嘗試使用Python學習數據科學,並遇到以下問題。Python從字典鍵中創建新列

假設我們有如下形式

enter image description here

和形式的字典的數據幀

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

我想從鍵創建的數據幀中的新列這本字典是這樣的條目,如下:

enter image description here

有沒有一種很好的方法在Python中做到這一點?

感謝您的幫助!

回答

6

您可以使用mapdict其中被交換鍵與值:

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 
4

一個一個襯墊使用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 .set()).from_dict(Regions,orient ='index')。stack()。reset_index(level = 0).rename(columns = {'level_0':'Region',0:'country'})。reset_index(drop = True) '? – MaxU

+0

@MaxU謝謝:)絕對更好。 –