我有两个数据框,假设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')
您有什么主意吗?您的输入很有价值。
答案 0 :(得分:1)
尝试将两列中的所有值都转换为字符串:
A['ID'] = A['ID'].astype(str)
B['ID'] = B['ID'].astype(str)
通常,当像这样的合并不起作用时,我会尝试通过在每一列中打印出唯一值来进行调试,以检查是否弹出任何内容(通常是dtype问题)。