我有兩個熊貓數據框。使用鍵合併兩個大熊貓數據框並將其分開的最佳方式
DF1
unique numerator
23 4
29 10
DF2
unique denominator
23 2
29 5
現在我想這樣
unique result
23 2
29 2
不使用循環......或取其最有效的方式。它是一種分裂分子/分母
我有兩個熊貓數據框。使用鍵合併兩個大熊貓數據框並將其分開的最佳方式
DF1
unique numerator
23 4
29 10
DF2
unique denominator
23 2
29 5
現在我想這樣
unique result
23 2
29 2
不使用循環......或取其最有效的方式。它是一種分裂分子/分母
如果兩個DFS索引設置爲unique
那麼你可以劃分2列:
In [6]:
df.set_index('unique')['numerator']/df1.set_index('unique')['denominator']
Out[6]:
unique
23 2
29 2
dtype: float64
或「獨一無二」合併,然後執行計算爲正常:
In [9]:
merged=df.merge(df1, on='unique')
merged
Out[9]:
unique numerator denominator
0 23 4 2
1 29 10 5
In [10]:
merged['result'] = merged['numerator']/merged['denominator']
merged
Out[10]:
unique numerator denominator result
0 23 4 2 2
1 29 10 5 2
第一個是完美的..非常感謝 –
EdChum提供了2個不錯的選擇。
另一種方法是使用div()或divide()函數。
df1 = pd.DataFrame ({'unique':[23,29],'numerator': [4,10]})
df2 = pd.DataFrame ({'unique':[23,29],'denominator': [2,5]})
df1.set_index('unique',inplace=True)
df2.set_index('unique',inplace=True)
print df1.div(df2['denominator'],axis=0)
要注意的重要一點是,你需要通過一系列又名DF2 [ '分母']劃分
df1.div(df2,axis=0)
會產生
denominator numerator
unique
23 NaN NaN
29 NaN NaN
這是因爲標籤df2中的'分母'與df1中的'分子'不匹配。然而,一系列沒有列標籤,因爲它的值是廣播橫跨df1的列。
你能解釋你如何得到結果嗎?它與'df2'完全相同(除了列名) – joris
爲什麼兩行的結果不是2? – EdChum
您的標題與您需要更新的問題毫無相似之處 – EdChum