如何解决按列合并2个Pandas数据帧,但不重复,然后选择要保留的列
我有2个结构相同的熊猫数据框: DF1
col1 col2 col3 col4 col5
Type Key Date first found Date last found Status
0 A 1 2020-08-11 07:28:18 2020-08-11 07:28:18 Done
1 A 2 2020-08-11 07:28:18 2020-08-12 07:28:18 In Progress
2 B 3 2020-08-11 07:28:18 2020-08-13 07:28:18 Done
3 B 4 2020-08-11 07:28:18 2020-08-13 07:28:18 In Progress
4 C 5 2020-08-11 07:28:18 2020-08-13 07:28:18 Done
和
DF2
col1 col2 col3 col4 col5
Type Key Date first found Date last found Status
0 A 1 2020-08-15 07:28:18 2020-08-15 07:28:18 Done
1 A 2 2020-08-15 07:28:18 2020-08-15 07:28:18 In Progress
2 B 3 2020-08-15 07:28:18 2020-08-15 07:28:18 Done
3 B 6 2020-08-15 07:28:18 2020-08-15 07:28:18 In Progress
4 C 7 2020-08-15 07:28:18 2020-08-15 07:28:18 Done
作为最终结果,我需要的是一个数据帧,该数据帧包含DF1中的1-3列和DF2中的4-5列,并且没有重复项。如果密钥仅存在于数据帧之一中,则还应将其记录在结果数据帧中,例如:
DFResult
col1 col2 col3 col4 col5
Type Key Date first found Date last found Status
0 A 1 2020-08-11 07:28:18 2020-08-15 07:28:18 Done
1 A 2 2020-08-11 07:28:18 2020-08-15 07:28:18 In Progress
2 B 3 2020-08-11 07:28:18 2020-08-15 07:28:18 Done
3 B 4 2020-08-11 07:28:18 2020-08-13 07:28:18 In Progress
4 C 5 2020-08-11 07:28:18 2020-08-13 07:28:18 Done
5 B 6 2020-08-15 07:28:18 2020-08-15 07:28:18 In Progress
6 C 7 2020-08-15 07:28:18 2020-08-15 07:28:18 Done
解决方法
我将首先Options -Indexes
(根据需要)将数据帧的前三列与第二个数据帧的后两列合并。但是,对于第二个数据帧,请确保包括inner
,因为这些是您将合并'Type','Key'
的列。
然后使用on
和concat
temp
这个DF1
数据帧,并根据DF2
的子集删除重复项,并保留['Type','Key']
删除重复项时的值。那是因为您将first
数据帧作为temp
pd.concat
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。