我已经看过几次这个问题,但答案对我不起作用。我有两个数据框,split_df
和csv_df
我试图在每个数据框中合并一个名为key
的列。
这是split_df
key tags
2785 30000 ipv6
2785 30000 networking
2785 30000 wireless
2785 30000 standards
2785 30000 satcom
这是csv_df
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的新手
谢谢!
答案 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'))