我有这样的数据:
d = {'col1': ['1-2-3', '2-2-3'], 'col2': ['1-2-2-3', '4-4-4']}
df = pd.DataFrame(data=d)
df
col1 col2
0 1-2-3 1-2-2-3
1 2-2-3 4-4-4为了实现这一点,我需要删除重复项并保留顺序:
col1 col2
0 1-2-3 1-2-3
1 2-3 4发布于 2021-01-22 17:00:00
使用DataFrame.applymap...
如果顺序很重要,请结合使用split和dict.fromkeys删除重复项,最后一次加入:
df = df.applymap(lambda x: '-'.join(dict.fromkeys(x.split('-')).keys()))
print (df)
col1 col2
0 1-2-3 1-2-3
1 2-3 4如果顺序不重要,请使用sets:
df = df.applymap(lambda x: '-'.join(set(x.split('-'))))
print (df)
col1 col2
0 3-2-1 3-2-1
1 3-2 4发布于 2021-01-22 17:13:25
drop_duplicates是您可以使用的通用应用程序接口。但在这种特殊情况下,您可以创建一个临时列,将所有数字放在一个列表中。然后再次将其转换为非重复字符串
df = df.apply(lambda x: x.str.split('-'), axis=1)
df['col1'] = df['col1'].apply(lambda x: '-'.join((list(dict.fromkeys(x)))) )
df['col2'] = df['col2'].apply(lambda x: '-'.join((list(dict.fromkeys(x)))) )
dfhttps://stackoverflow.com/questions/65842080
复制相似问题