2017-01-25 247 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

谢谢你 - 就是这样:-) –