2016-11-30 55 views
2

熊貓DataFrames我有一個數據幀df1分隔兩個使用字典作爲一個關鍵

df1 = pd.DataFrame(np.random.randint(0,10,size=(10, 4)), columns=list('ABCD')) 

df1.head() 
    A B C D 
0 9 8 1 1 
1 9 7 1 6 
2 0 6 7 5 
3 5 1 6 0 
4 4 0 5 4 

第二個數據幀df2

df2 = pd.DataFrame(np.random.randint(0,10,size=(10, 3)), columns=list('FGH')) 

df2.head() 
    F G H 
0 8 5 9 
1 3 0 7 
2 2 5 4 
3 3 5 4 
4 5 6 6 

和詞典字典:

dict = {"A" : "F", "B" : "F", "C" : "H", "D" : "G" } 

我想用字典中的元素作爲關鍵字來分割兩個數據框:Colu由F欄,由F欄,由列H柱C和列d通過柱G.列B MN甲結果應該是:

df3.head 

0 1.125 1.000 0.111 0.200 
1 3.000 2.333 1.429 NA 
...  

感謝。

+0

你能證明你的努力,這並不難做到 – EdChum

+0

什麼你通過我的努力意思?我對如何開始沒有任何想法。我想過將它們合併,但我仍然不知道如何告訴熊貓使用字典作爲重點 –

回答

2

遍歷你的字典的項目,並劃分形成在df1與值的列名(df2列名)的按鍵。這些形成了一系列對象,其名稱對應於鍵。沿着圓柱方向將它們連接起來。

最後,reindex他們根據df1列保存排序。

df = pd.concat([pd.Series(df1[k]/df2[v], name=k) for k,v in my_dict.items()], axis=1) 
df.reindex(columns=df1.columns) 

enter image description here

注:我已經改變了你的字典的名稱,因爲它是不建議使用dict他們的名字也對應於內置式由辦法。

+1

它的工作原理,由於在同一個數據幀分兩列! –

2

所有你需要做的是使用/運營商直接向列或數據幀系列。

df3 = pd.DataFrame() #initialize an empty dataframe 
for i in dict: 
    df3[i+"/"+dict[i]] = df1[i]/df2[dict[i]] 


df3.head() 

enter image description here

+1

謝謝您的回答 –

相關問題