合并同一类型列上的两个数据框会给我错误的结果

时间:2019-10-08 14:40:49

标签: pandas merge

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

左侧数据框(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

右侧数据框(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')

您有什么主意吗?您的输入很有价值。

1 个答案:

答案 0 :(得分:1)

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

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