我有一个这样的表:
col1 col2
ben US-US-Uk
Man Uk-NL-DE
bee CA-CO-MX-MX
我怎样才能使第 2 列中的值唯一,这意味着有一个这样的表?
col1 col2
ben US-Uk
Man Uk-NL-DE
bee CA-CO-MX
我已经试过了:
a.cc.str.split('-').unique()
但出现以下错误:
TypeError: unhashable type: 'list'
有人知道怎么做吗?
您可以使用 apply
调用 lambda 函数来拆分字符串,然后连接唯一值:
In [10]:
df['col2'] = df['col2'].apply(lambda x: '-'.join(set(x.split('-'))))
df
Out[10]:
col1 col2
0 ben Uk-US
1 Man Uk-NL-DE
2 bee CA-CO-MX
另一种方法:
In [22]:
df['col2'].str.split('-').apply(lambda x: '-'.join(set(x)))
Out[22]:
0 Uk-US
1 Uk-NL-DE
2 CA-CO-MX
Name: col2, dtype: object
时间
In [24]:
%timeit df['col2'].str.split('-').apply(lambda x: '-'.join(set(x)))
%timeit df['col2'] = df['col2'].apply(lambda x: '-'.join(set(x.split('-'))))
1000 loops, best of 3: 418 µs per loop
1000 loops, best of 3: 246 µs per loop
我是一名优秀的程序员,十分优秀!