python - 合并在 Pandas 中返回 nan
问题描述
我想合并df1
并df2
在 common column 上ID
。df2
看起来像这样:
ID TYPE VALUE1 VALUE2 VALUE3
0 672117 Single 0.25 923.77 94.08
1 MSN242 DOUBLE 0.21 1219.31 105.77
2 673312 DOUBLE 0.20 4030.08 113.00
3 222255 Single 0.23 1119.38 126.69
使用的代码:
df3 = pd.merge(df1, df2, on ='ID', how = 'left')
好像有2510个通用ID(所有ID都匹配):
len(list(set(df1.ID) and set(df2.ID)))
>>> 2510
但df3
显示所有列TYPE
, VALUE1
, VALUE2
,VALUE3
大多是nan
. 什么地方出了错?
编辑:(
df1
形状2510 rows × 22 columns
)看起来像这样:
ID CRITERION1 DATE MEAS1 MEAS2 MEAS3 COMPOSITION DPMT %CONTENT1 %CONTENT2 MeanGroup %Article1 %CA_Count %CA_Count1 CATEGORY1 CATEGORY2 CODE Group COST1 COST2 COST3 COST4
0 000002 Y 2009-01-03 11:52:46 0.930150 17.412708 1.583333 Component P 0.407859 0.979346 C 0.401572 0.000098 0.946168 Z L LEVEL1 NY 1767.0 1767.0 1767.0 1767.0
1 XC-004 Y 2009-01-03 11:52:46 1.898295 0.548192 0.250000 Component NP 0.874263 0.999742 C 0.797250 0.000015 0.995345 Z M LEVEL1 NU 15525.0 15525.0 15525.0 15525.0
解决方案
由于您向左合并(加入),它将保留左表(df1)中的所有 ID,并从 df2 中删除所有不匹配的 ID。然后,它从只剩下 NaN 的 ID 中填充所有不存在的 VALUE1、VALUE2、VALUE3。
我假设您的 ID 不匹配非常大,并且您len(df1.ID) - 2510
的表中有许多 NaN 行。
推荐阅读
- google-calendar-api - 谷歌日历:如何检索包含异常的系列
- mongodb - 嵌套对象键的MongoDB聚合计数
- c# - 如何显示具有角色的用户列表 - ASP.NET (Core)
- javascript - 如何检测反应js中div元素内的上下滚动?
- git - 终端(或 iterm2)中 git 分支名称旁边带有特殊字符的数字
- node.js - Axios 未在 Heroku 部署的 MERN 应用程序中接收 cookie
- laravel - 挣扎于如何使用 Laravel 从我的数据库中获取一些东西
- python - 如何使用 Python api 更新 Google Cloud 调度程序
- javascript - Discordjs - 使用 fs.watchFile 事件创建频道
- javascript - 反应firebase auth displayName返回null