我是 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"]
代码
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