pandas 合并两列但删除重复值

pbgvytdp  于 2023-03-11  发布在  其他
关注(0)|答案(2)|浏览(228)

我在Python Pandas中遇到了以下示例 Dataframe 的问题。
| 色谱柱A|B栏|
| - ------|- ------|
| 项目a|B|
| (c)秘书长的报告|(c)秘书长的报告|
| 日|电子|
| 克|克|
我很想拥有这样的东西
| 色谱柱A|B栏|C栏|
| - ------|- ------|- ------|
| 项目a|B|阿布|
| (c)秘书长的报告|(c)秘书长的报告|(c)秘书长的报告|
| 日|电子|德|
| 克|克|克|
有人能帮忙吗?非常感谢。

11dmarpk

11dmarpk1#

agg使用自定义聚合,使用dict.from_keys删除重复项并保持顺序,使用str.join连接:

df['Column C'] = df.agg(lambda r: ''.join(dict.fromkeys(r)), axis=1)

# or limiting to specific columns:
cols = ['Column A', 'Column B']
df['Column C'] = df[cols].agg(lambda r: ''.join(dict.fromkeys(r)), axis=1)

或者,如果只有两列:

df['Column C'] = (df['Column A'].add(df['Column B'])
                  .where(df['Column A'].ne(df['Column B']), df['Column A'])
                  )

输出:

Column A Column B Column C
0        a        b       ab
1        c        c        c
2        d        e       de
3        g        g        g
uhry853o

uhry853o2#

你可以使用applyaxis=1来迭代每一行Pandas,然后使用pandas.Series.unique''.join来得到结果。

df['Column C'] = df[['Column A', 'Column B']].apply(lambda x: ''.join(x.unique()), axis=1)
Column A Column B Column C
0        a        b       ab
1        c        c        c
2        d        e       de
3        g        g        g

相关问题