合并两个pandas数据帧

时间:2017-01-25 21:09:55

标签: python pandas join dataframe merge

我已经看过几次这个问题,但答案对我不起作用。我有两个数据框,split_dfcsv_df我试图在每个数据框中合并一个名为key的列。

这是split_df

中的前5项
        key        tags
2785  30000        ipv6
2785  30000  networking
2785  30000    wireless
2785  30000   standards
2785  30000      satcom

这是csv_df

中的前5项
     key
0  30000
1  30002
2  31288
3  33630
4  31663

当我运行这个合并声明时:

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和Pandas的新手

谢谢!

2 个答案:

答案 0 :(得分: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在您的数据框架中是不同的(我的相同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 :(得分:3)

您的某个数据框中的key列为int,而另一个为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'))