我有两个数据集:A和B。
如果数据集Ayear
,,
delivery
,type
, 和vendor
所有栏目均与数据集BTags
、
从B组的相应行取。 否则,我不想改动A中的<代码>项目_id。qtr
、TYPE
和msc
相吻合。 然后,我想将A组数据中的配量与<代码>项目名称/代码”相匹配的条目中的<代码>项目_id
数据集A:
Year ID deliv Gen type vendor project_id
2022 BR Q2 2022 L aa d BR2 aa1 Q2 2022 - L
2022 BR Q2 2022 L dd d BR2 dd1 Q2 2022 - L
2022 BR Q2 2022 L dd d BR2 dd2 Q2 2022 - L
2022 BR Q3 2022 L bb d BR2 bb1 Q3 2022 - L
2022 BR Q4 2022 L aa d BR2 aa1 Q4 2022 - L
2022 BR Q4 2022 L dd nd BR2 dd1 Q4 2022 - L
B类数据:
Project Name Tags ID qtr TYPE msc NUM
BB H_AA01 Q4 2022 2022 BOLOL Q4 2022 aa d 01
BR2 H_DD_nd02 Q4 2022 2022 BR Q4 2022 dd nd 02
BR2 BB01 Q3.2022 2022 BR Q3 2022 bb d 01
BR2 H_DD01 Q2 2022 2022 BR Q2 2022 dd d 01
BR2 H_DD02 Q2 2022 2022 BR Q2 2022 dd d 02
BR2 H_AA01 Q2 2022 2022 BR Q2 2022 aa d 01
desired result:
Year ID delivery Gen type vendor project_id
2022 BR Q2 2022 L aa d BR2 H_AA01 Q2 2022
2022 BR Q2 2022 L dd d BR2 H_DD01 Q2 2022
2022 BR Q2 2022 L dd d BR2 H_DD02 Q2 2022
2022 BR Q3 2022 L bb d BR2 BB01 Q3.2022
2022 BR Q4 2022 L aa d BR2 aa1 Q4 2022 - L
2022 BR Q4 2022 L dd nd BR2 H_DD_nd02 Q4 2022
我目前试图:
df_merged = pd.merge(df_A, df_B[[ Project Name , Tags , ID , qtr , TYPE , msc ]],
how= left ,
left_on=[ Year , ID , delivery , type , vendor ],
right_on=[ Tags , ID , qtr , TYPE , msc ])
# Replacing project_id in A with Project Name from B where there is a match
df_merged[ project_id ] = df_merged[ Project Name ].combine_first(df_merged[ project_id ])
# Dropping unnecessary columns from the merge
df_final = df_merged.drop([ Project Name , Tags , qtr , TYPE , msc ], axis=1)
然而,上述文字冲破了我的数据集,造成了不必要的浏览和多栏。
最终产出应与原始数据集相同。 唯一的区别是<代码>项目_id。 正在更新一栏。 我如何适当开展这一行动?