python - 加入两个 Pandas 数据框,在特定列中保留特定字符串
问题描述
我有两个数据框,我正在尝试合并/加入/连接(我不确定正确的术语)。我不关心索引。ID 是每一行的唯一标识符。有很多数据列(此处简化为 AD),但对于每个唯一 ID,数据列之间的数据列将是相同的,但最终的 QC 列除外。
我想加入这两个数据框,这样当有重复的条目(由 ID 列中的重复确定)时,保留大多数行的任何实例(第一个或最后一个),但为 QC_1 和 QC_2 保留的值是实际上有一个值(在这种情况下,我使用了字符串 'Fail' 但我可以切换到 Bool 并保持 True 如果这使这更容易)。
我已经尝试过.merge 和.join 的迭代。我得到的最接近的是 .concat 或 .append 但是我不知道如何将重复的行合并为一个。从本质上讲,我不知所措。
df1
Index ID A B C D QC_1
3 13 10 15 17 100 Fail
4 17 20 25 27 110 Fail
7 42 30 35 37 120 Fail
12 115 40 45 47 130 Fail
df2
Index ID A B C D QC_2
2 6 11 16 18 101 Fail
4 17 20 25 27 110 Fail
7 42 30 35 37 120 Fail
13 152 41 46 48 131 Fail
目标
Index ID A B C D QC_1 QC_2
3 13 10 15 17 100 Fail NaN
4 17 20 25 27 110 Fail Fail
7 42 30 35 37 120 Fail Fail
12 115 40 45 47 130 Fail NaN
2 6 11 16 18 101 NaN Fail
13 152 41 46 48 131 NaN Fail
解决方案
print (df1.set_index("ID").combine_first(df2.set_index("ID")).reset_index())
ID A B C D Index QC_1 QC_2
0 6 11.0 16.0 18.0 101.0 2.0 NaN Fail
1 13 10.0 15.0 17.0 100.0 3.0 Fail NaN
2 17 20.0 25.0 27.0 110.0 4.0 Fail Fail
3 42 30.0 35.0 37.0 120.0 7.0 Fail Fail
4 115 40.0 45.0 47.0 130.0 12.0 Fail NaN
5 152 41.0 46.0 48.0 131.0 13.0 NaN Fail
推荐阅读
- json - 谷歌 json 风格指南:如何发送单项响应?
- javascript - 触发点击事件需要多长时间?
- python - 如何在使用 pandas 导入 csv 文件期间有效地删除重叠行?
- spring - RestController 无法正常工作
- c# - 如何处理 AMP 页面中已删除的推文
- angular - 奇怪的 *ngFor 问题
- javascript - 如何让浏览器在发起跨域HTTP请求时包含主机源域的cookies
- angular - 父 li 上的单击侦听器还注册了对子 ul li 子菜单的单击
- python - 如何在只读模式下设置输入的值
- flask - 在 anaconda Prompt 上运行 FLASK 时出错