我在Python Pandas中遇到了以下示例 Dataframe 的问题。| 色谱柱A|B栏|| - ------|- ------|| 项目a|B|| (c)秘书长的报告|(c)秘书长的报告|| 日|电子|| 克|克|我很想拥有这样的东西| 色谱柱A|B栏|C栏|| - ------|- ------|- ------|| 项目a|B|阿布|| (c)秘书长的报告|(c)秘书长的报告|(c)秘书长的报告|| 日|电子|德|| 克|克|克|有人能帮忙吗?非常感谢。
11dmarpk1#
对agg使用自定义聚合,使用dict.from_keys删除重复项并保持顺序,使用str.join连接:
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
uhry853o2#
你可以使用apply和axis=1来迭代每一行Pandas,然后使用pandas.Series.unique和''.join来得到结果。
apply
axis=1
pandas.Series.unique
''.join
df['Column C'] = df[['Column A', 'Column B']].apply(lambda x: ''.join(x.unique()), axis=1)
2条答案
按热度按时间11dmarpk1#
对
agg
使用自定义聚合,使用dict.from_keys
删除重复项并保持顺序,使用str.join
连接:或者,如果只有两列:
输出:
uhry853o2#
你可以使用
apply
和axis=1
来迭代每一行Pandas,然后使用pandas.Series.unique
和''.join
来得到结果。