OrderedDict
Вы можете отбрасывать дубликаты без потери порядка, используя OrderedDict
:
from collections import OrderedDict
df['a'] = [''.join(OrderedDict.fromkeys(v)) for v in df['a']]
df
a
0 重庆市花园
1 北京市教育中心
В Python-3.6 + вы можете просто использовать стандартный словарь -
df['a'] = [''.join(dict.fromkeys(v)) for v in df['a']]
str.extractall
+ groupby
+ drop_duplicates
Это ужасная альтернатива -
(df.a.str.extractall('(.)')[0]
.groupby(level=0)
.apply(pd.Series.drop_duplicates)
.groupby(level=0)
.agg(''.join)
)
0 重庆市花园
1 北京市教育中心
Name: 0, dtype: object