您的问题是由于中的这两个条目引起的
df_A
:
2022 BR Q2 2022 L dd d BR2 dd1 Q2 2022 - L
2022 BR Q2 2022 L dd d BR2 dd2 Q2 2022 - L
和在
df_B
:
2022 BR Q2 2022 L dd d BR2 H_DD01 Q2 2022
2022 BR Q2 2022 L dd d BR2 H_DD02 Q2 2022
在合并中,这些具有完全相同的合并条件,因此您在输出中得到4行,而不是您想要的2行:
1 2022 BR Q2 2022 L dd d BR2 H_DD02 Q2 2022
2 2022 BR Q2 2022 L dd d BR2 H_DD01 Q2 2022
3 2022 BR Q2 2022 L dd d BR2 H_DD02 Q2 2022
4 2022 BR Q2 2022 L dd d BR2 H_DD01 Q2 2022
没有任何进一步的识别手段
Project Name
在里面
df_B
对应于
project_id
在里面
df_A
,你将永远有这个问题。您可以使用解决此问题
drop_duplicates
例如
df_final = df_final.drop_duplicates().reset_index(drop=True)
这将给您:
Year ID delivery Gen type vendor project_id
0 2022 BR Q2 2022 L aa d BR2 H_AA01 Q2 2022
1 2022 BR Q2 2022 L dd d BR2 H_DD02 Q2 2022
2 2022 BR Q2 2022 L dd d BR2 H_DD01 Q2 2022
3 2022 BR Q3 2022 L bb d BR2 BB01 Q3.2022
4 2022 BR Q4 2022 L aa d BR2 aa1 Q4 2022 - L
5 2022 BR Q4 2022 L dd nd BR2 H_DD_nd02 Q4 2022
您也可以使用
cumcount
在@Timeless answer中提出的解决方案作为解决此问题的变通方法,但在任何一种情况下,您得到的结果都将取决于中的行的顺序
df_A
和
df_B
例如,如果行4&5英寸
df_B
被交换时,您将从他们的代码中获得以下输出:
年份ID交付Gen类型供应商项目_ID
0 2022 BR 2022 Q2 L aa d BR2 H_AA01 2022 Q2
2022年1月BR 2022年第2季度L dd d BR2 H_DD02 2022年第二季度
2022年2月BR 2022年第2季度L dd d BR2 H_DD01 2022年第二季度
2022年3月BR 2022年第3季度L bb d BR2 BB01 2022年第三季度
2022年4月BR 2022年第4季度L aa d BR2 aa1 2022年第四季度-L
2022年5月BR 2022年第4季度L dd nd BR2 H_dd_nd02 2022年第四季度
这可能对你的目的很好,但这是需要注意的。理想情况下,你应该有一些独特的东西来识别每个项目,并同时出现在这两个项目中
df_A
和
df_B
(它可以像一个数字一样简单),否则你将来会继续遇到这个问题。