pandas - 在同一类型列上合并两个数据框会给我错误的结果
问题描述
我有两个数据框,假设 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')
你有什么想法可能是错的吗?您的意见很有价值。
解决方案
尝试将两列中的所有值都转换为字符串:
A['ID'] = A['ID'].astype(str)
B['ID'] = B['ID'].astype(str)
通常,当这样的合并不起作用时,我会尝试通过打印出每列中的唯一值来检查是否有任何弹出(通常是 dtype 问题)来进行调试。
推荐阅读
- reactjs - React 钩子不使用异步等待设置对象状态。始终未定义
- php - 如何在函数内重启函数?
- javascript - TypeError:“config.server”属性是必需的,并且必须是 NodeJS 中的字符串类型
- kubernetes - 在普罗米修斯中重新标记 pod 名称
- wordpress - 如何确认 ESLint 正在执行哪些自定义规则集?
- qt - 如何为两个QTabWidget的两个不同标签栏设置qss样式?
- c - 在 OSX 中获取进程内存和 cpu 使用率
- c++ - 获取 cv::Mat 的值类型
- angularjs - 从 AngularJS 客户端中的 mod_auth_openidc 检索身份验证令牌
- python - 如何从字典中的文件中将相同键的值相互添加?