合并Pandas Dataframe,在一个键上没有重复的列[重复]

new9mtju  于 2023-11-15  发布在  其他
关注(0)|答案(1)|浏览(171)

此问题在此处已有答案

Pandas left join with duplicates(2个答案)
17天前关闭。
我是Pandas的新手,在这里尝试过查看不同的解决方案,但我在连接两个数据框时遇到了一些问题。它们连接正常,但对于某些列,我希望它保持为NULL,而不是重复
样品DF 1
| 员工|年|
| --|--|
| x12345| 2023 |
| x12345| 2022 |
| Z12345| 2015 |
| Z12345| 2013 |
样品DF 2
| 员工|地位|
| --|--|
| 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 |NULL|
| Z12345| 2015 |活性|
| Z12345| 2013 |NULL|
我已经尝试
merged = pd.merge(DF1,DF2,how=“outer”,on=[“employee”]

ne5o7dgx

ne5o7dgx1#

验证码

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

相关问题