2017-07-19 69 views
2

我正面臨着一個特殊問題。我有2個數據框,x有180k行,y有700行。我正在創建另一個系列z,通過查找x到y的列並獲得第三列作爲系列。但是當我將這個系列添加到x時,值完全改變。以下給出兩個計數分佈。任何想法,爲什麼會發生這種情況?向熊貓數據框添加系列的特殊問題

z=pd.merge(x,y,how='left',left_on='xcol1',right_on='ycol1')['ycol2'] 
x['colnew']=z 
z.value_counts() 
x['colnew'].value_counts() 
+0

當您執行pd.merge()時,'z'不是DataFrame嗎?它應該是。 – Stratix

+0

你是什麼意思「查找從x到y的列?」 – hausdork

回答

0

檢查z系列的鏡頭。可能你在y中有重複的鍵或沒有相應的鍵,所以z可能與x ['colnew']不一樣大小。

0

退房this pandas documentation for merging,特別是Jupyter筆記本一樣[44].

我想到一個問題,可能是因爲「鑰匙」不用排隊。該參數指定left_on='xcol1'xcol1用於數據框x聯接鍵,同樣right_on='ycol1'指定ycol1作爲連接鍵的數據幀y.

  1. how參數確定哪個鍵來在你的合併數據幀。由於您指定了對應於數據幀xhow='left',因此如果數據幀y的密鑰未包含在數據幀x的密鑰中,則它們將被丟棄。 結果:您最終可能會得到一個合併數據框z,該數據框比您期望的更小(以行數計,即觀察值)。

  2. 如果從數據框中x和數據框y的連接鍵不匹配,相應的變量值將被映射到NaN結果:value_counts()將會改變,因爲將會有更多的NaN值,這些值不會在此函數中計算。

0

想通了。我基本上不得不使用

x['colnew']=z.values 

這是非常令人驚訝的,從來沒有遇到過這個。