[英]Remove duplicated letters from pandas column exist only to each other, Python
from this question : Python: Best Way to remove duplicate character from string answer:来自这个问题: Python:从字符串答案中删除重复字符的最佳方法:
''.join(ch for ch, _ in itertools.groupby(string_to_remove)
I know how to remove duplicated letters exists only next to each other, how to apply this solution to column in pandas?我知道如何删除仅彼此相邻的重复字母,如何将此解决方案应用于熊猫中的列?
df: df:
df=pd.DataFrame({'A':['ODOODY','LLHHEELLO'],'B':['NNMminee','DDasdss']})
expected result:预期结果:
A,B
ODODY,NMine
LHELO,Dasds
tried: df['A'] = df['A'].apply(lambda x: ''.join(ch for ch, _ in itertools.groupby(x['A'])))
thanks !试过: df['A'] = df['A'].apply(lambda x: ''.join(ch for ch, _ in itertools.groupby(x['A'])))
谢谢!
Use DataFrame.applymap
, if necessary filter columns for remove duplicates:使用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
Solution with DataFrame.apply
is possible, but need process each value separately, so aded list comprehension:使用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
Or use Series.apply
:或使用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.