2016-04-04 189 views
-1

我有兩個dataframes我想合併或加入在Python:熊貓:合併或加入返回錯誤的數據幀

「數據」:

 shortcontentid hour_timings not_relevant other postman_challenges \ 
    0    1   NaN   1.0 NaN     NaN 
    1    2   NaN   3.0 NaN     NaN 

而一個數據幀 「verbatims」:

           sentences shortcontentid 
0 Gabe_Newell a écrit : 40 maxi en luminosité ? ...    1 
1 J'aime une vidéo @YouTube de @seb_frit - CE ME...    2 

我想通過主鍵shortcontentid左側加入這些幀,這兩個幀是通用的。正如你所看到的,操作只需將從陳述數據框的sentences列添加到data數據框。 我做了經典的合併:

table = data.merge(verbatims, on='shortcontentid', how = "left") 

但代碼將無法正常工作或返回一個錯誤的數據幀。例如,如果我在table上進行打印,我將得到verbatims的值,但不是data的值。 下面是一個例子:

 nonusable 2 or bigger sentences 
0   1  qualite  NaN 

正如你可以看到sentences充滿NaN的,而我想看到我的實際句子。

*NB : I imported my data from `pandas.csv` : 

data = pandas.read_csv("data crowdflower.csv", sep=";", header=0, engine='python')* 

對這些表執行乾淨合併/連接的最佳方法是什麼?

謝謝!

+1

解釋什麼不工作發佈原始示例數據,代碼來創建您的dfs和不正確的合併看起來像 – EdChum

+0

好吧我編輯我的文章。不過,我可以發佈樣本數據。 –

回答

0

嘗試在這種形式:

table = pandas.merge(data, verbatims, how='inner', on='shortcontentid') 
print (table) 
+0

內部合併將不起作用,因爲它僅返回一個僅包含列名的空數據框: 'Empty DataFrame 列:[shortcontentid,hour_timings,not_relevant,other,postman_challenges,postman_relationship,quality_postman_work,Totalg n ral,結果,不可用,2或更大,_unit_id,_created_at,_updated_at,品牌,句子] 索引:[]' –

0

我已經部分明白我的問題。 verbatims中的shortcontentid的dtype是整數,而它是data中的對象。所以我必須將dtype從object轉換爲int。我想:

pandas.to_numeric(data) 

但它返回以下錯誤:

arg must be a list, tuple, 1-d array, or Series 

,所以我仍然受阻。