Удалить повторяющиеся китайские иероглифы в пандах - PullRequest
0 голосов
/ 15 мая 2018
df=pd.DataFrame({'a':['重庆市重庆花园','北京市市教育中心']})

Как я могу удалить дублирующиеся символы строк в столбце 'a' и сделать его

['重庆市花园','北京市教育中心']

вместо

['重庆市重庆花园','北京市市教育中心']

Спасибо!

Ответы [ 2 ]

0 голосов
/ 15 мая 2018

Вы можете использовать

df.a.apply(list).apply(lambda x : ''.join(sorted(set(x), key=x.index)))
Out[169]: 
0      重庆市花园
1    北京市教育中心
Name: a, dtype: object
0 голосов
/ 15 мая 2018

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
...