请考虑以下数据帧
df = pd.DataFrame({'name' : [['one two','three four'], ['one'],[], [],['one two'],['three']],
'col' : ['A','B','A','B','A','B']})
df.sort_values(by='col',inplace=True)
df
Out[62]:
col name
0 A [one two, three four]
2 A []
4 A [one two]
1 B [one]
3 B []
5 B [three]
我想得到一个列,用于跟踪col的每个组合的名称中包含的所有唯一字符串.
也就是说,预期的输出是
df
Out[62]:
col name unique_list
0 A [one two, three four] [one two, three four]
2 A [] [one two, three four]
4 A [one two] [one two, three four]
1 B [one] [one, three]
3 B [] [one, three]
5 B [three] [one, three]
实际上,对于A组来说,你可以看到[一二,三四],[]和[一二]中包含的唯一字符串集是[一二]
我可以使用Pandas : how to get the unique number of values in cells when cells contain lists?获取相应数量的唯一值:
df['count_unique']=df.groupby('col')['name'].transform(lambda x: list(pd.Series(x.apply(pd.Series).stack().reset_index(drop=True, level=1).nunique())))
df
Out[65]:
col name count_unique
0 A [one two, three four] 2
2 A [] 2
4 A [one two] 2
1 B [one] 2
3 B [] 2
5 B [three] 2
但用上面的唯一替换nunique失败了.
有任何想法吗?
谢谢!
解决方法:
这是解决方案
df['unique_list'] = df.col.map(df.groupby('col')['name'].sum().apply(np.unique))
df
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。