繁体   English   中英

从 Pandas 列中删除重复的字母只存在于彼此,Python

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM