合并 Pandas Dataframe,一键不重复列[重复]

问题描述 投票:0回答:1

我是 Pandas 新手,并尝试在这里查看不同的解决方案,但在连接两个数据框时遇到一些问题。他们加入正常,但是对于某些列,我希望它保持为 NULL 而不是重复

样本 DF1

员工
x12345 2023
x12345 2022
z12345 2015
z12345 2013

样本 DF2

员工 状态
x12345 活跃
z12345 活跃
m12345 不活跃
q12345 活跃

我尝试过的事情

merged = pd.merge(DF1, DF2, how="outer", on=["employee"]

我现在拥有的东西

员工 状态
x12345 2023 活跃
x12345 2022 活跃
z12345 2015 活跃
z12345 2013 活跃

我需要什么

员工 状态
x12345 2023 活跃
x12345 2022
z12345 2015 活跃
z12345 2013

我尝试过的事情

merged = pd.merge(DF1, DF2, how="outer", on=["employee"]

pandas dataframe join duplicates outer-join
1个回答
0
投票

代码

df1.assign(key=df1.groupby('employee').cumcount())\
   .merge(df2.assign(key=df2.groupby('employee').cumcount()), how='left')\
   .drop('key', axis=1)

输出:

employee    year    status
0   x12345  2023    active
1   x12345  2022    NaN
2   z12345  2015    active
3   z12345  2013    NaN
© www.soinside.com 2019 - 2024. All rights reserved.