微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

python – Pandas:如何获取包含值列表的列的唯一值?

请考虑以下数据帧

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

enter image description here

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐