![](/img/trans.png)
[英]Remove duplicated in pandas but save values from other column PANDAS
[英]Remove duplicated letters from pandas column exist only to each other, Python
来自这个问题: Python:从字符串答案中删除重复字符的最佳方法:
''.join(ch for ch, _ in itertools.groupby(string_to_remove)
我知道如何删除仅彼此相邻的重复字母,如何将此解决方案应用于熊猫中的列?
df:
df=pd.DataFrame({'A':['ODOODY','LLHHEELLO'],'B':['NNMminee','DDasdss']})
预期结果:
A,B
ODODY,NMine
LHELO,Dasds
试过: df['A'] = df['A'].apply(lambda x: ''.join(ch for ch, _ in itertools.groupby(x['A'])))
谢谢!
使用DataFrame.applymap
,如有必要,过滤列以删除重复项:
import itertools
cols = ['A','B']
df[cols] = df[cols].applymap(lambda x: ''.join(ch for ch, _ in itertools.groupby(x)))
#for all columns
#df = df.applymap(lambda x: ''.join(ch for ch, _ in itertools.groupby(x)))
print (df)
A B
0 ODODY NMmine
1 LHELO Dasds
使用DataFrame.apply
解决方案是可能的,但需要单独处理每个值,因此添加列表理解:
df[cols] = df[cols].apply(lambda x: [''.join(ch for ch, _ in itertools.groupby(y)) for y in x])
print (df)
A B
0 ODODY NMmine
1 LHELO Dasds
或使用Series.apply
:
f = lambda x: ''.join(ch for ch, _ in itertools.groupby(x))
df['A'] = df['A'].apply(f)
df['B'] = df['B'].apply(f)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.