首页 > 解决方案 > 在同一类型列上合并两个数据框会给我错误的结果

问题描述

我有两个数据框,假设 A 和 B,它们是在读取 Excel 文件的表格并执行一些基本功能后创建的。我需要merge right一个名为 ID 的列上的两个数据帧,它首先被转换astype(str)为两个数据帧。

左侧 Dataframe (A) 的 ID 列是:

0        5815518813016
1        5835503994014
2        5835504934023
3        5845535359006
4        5865520960012
5        5865532845006
6        5875531550008
7        5885498289039
8     5885498289039_A2
9     5885498289039_A3
10    5885498289039_X2
11    5885498289039_X3
12       5885509768698
13       5885522349999
14       5895507791025
Name: ID, dtype: object

右侧 Dataframe (B) 的 ID 列是:

0        5835503994014
1        5845535359006
2        5835504934023
3        5815518813016
4     5885498289039_A1
5     5885498289039_A2
6     5885498289039_A3
7     5885498289039_X1
8     5885498289039_X2
9     5885498289039_X3
10       5885498289039
11       5865532845006
12       5875531550008
13       5865520960012
14       5885522349998
15       5895507791025
16       5885509768698
Name: ID, dtype: object

但是,当我合并两者时,左侧 (A) 数据框的其余列变为“空”(np.nan),除了 ID 不仅包含数字而且还包含字母的行。这是pd.merge()我做的:

A_B=A.merge(B[['ID','col_B']], left_on='ID', right_on='ID', how='right')

你有什么想法可能是错的吗?您的意见很有价值。

标签: pandasmerge

解决方案


尝试将两列中的所有值都转换为字符串: A['ID'] = A['ID'].astype(str) B['ID'] = B['ID'].astype(str)

通常,当这样的合并不起作用时,我会尝试通过打印出每列中的唯一值来检查是否有任何弹出(通常是 dtype 问题)来进行调试。


推荐阅读