2017-01-25 293 views
3

我已經看過這個問題幾次,但答案不適合我。我有兩個數據幀,split_dfcsv_df,我試圖合併一個名爲key的列。合併兩個熊貓數據幀

下面是split_df

 key  tags 
2785 30000  ipv6 
2785 30000 networking 
2785 30000 wireless 
2785 30000 standards 
2785 30000  satcom 

前5項下面是來自csv_df

 key 
0 30000 
1 30002 
2 31288 
3 33630 
4 31663 

當我運行此合併聲明的前5項:

common_df = pd.merge(split_df,csv_df, on=['key'], suffixes=('_left', '_right')) 

我得到:

Empty DataFrame 
Columns: [key, tags] 
Index: [] 

過程完成,退出代碼爲0

我想不通爲什麼合併是不是爲我工作。有什麼建議麼?

我有兩個索引(和已經運行與他們進行合併以及)

csv_df.set_index('key') 
split_df.set_index('key') 

我很新的Pyton和大熊貓

謝謝!

回答

3

從上面的代碼這個工作對我來說:

In [11]: pd.merge(split_df,csv_df, on=['key'], suffixes=('_left', '_right')) 
Out[11]: 
    key  tags 
0 30000  ipv6 
1 30000 networking 
2 30000 wireless 
3 30000 standards 
4 30000  satcom 

我懷疑是列類型key在你dataframes(和我的相同int)不同。

最有可能的一個是字符串(另一個是float/int)。

In [12]: split_df["key"] = split_df["key"].apply(str) 

In [13]: pd.merge(split_df,csv_df, on=['key'], suffixes=('_left', '_right')) 
Out[13]: 
Empty DataFrame 
Columns: [key, tags] 
Index: [] 

如果他們兩個字符串:

In [14]: csv_df["key"] = csv_df["key"].apply(str) 

In [15]: pd.merge(split_df,csv_df, on=['key'], suffixes=('_left', '_right')) 
Out[15]: 
    key  tags 
0 30000  ipv6 
1 30000 networking 
2 30000 wireless 
3 30000 standards 
4 30000  satcom 
+1

檢查與'splitt_df.dtypes'和'csv_df.dtypes' –

3

在dataframes之一的keyint,而另一個是str

split_df.key = split_df.key.astype(int) 
csv_df.key = csv_df.key.astype(int) 

pd.merge(split_df,csv_df, on=['key'], suffixes=('_left', '_right')) 
+0

謝謝你 - 就是這樣:-) –