繁体   English   中英

如何在 numpy 数组 pandas 列中使用 groupby 进行值计数

[英]How to do value counts with groupby in a numpy array pandas column

我有一个 pandas dataframe 像这样:

import pandas as pd
foo = pd.DataFrame({'s': ['a','b','a','a'], 'versions':[['1','2'],'2',['1','2'],'2']})

我想value_counts() s按 group 列versions

我努力了

foo.groupby('s')['versions'].value_counts()

但我收到一个错误TypeError: unhashable type: 'list' ,有什么想法吗?

您可以将列表/数组转换为可散列的元组,但因为还有字符串需要if-else语句来避免将字符串100拆分为元组(1,0,0)

foo['versions'] = foo['versions'].apply(lambda x: tuple(x) if isinstance(x, list) else (x,))
print (foo)
   s versions
0  a   (1, 2)
1  b     (2,)
2  a   (1, 2)
3  a     (2,)

s = foo.groupby('s')['versions'].value_counts()
print (s)
s  versions
a  (1, 2)      2
   (2,)        1
b  (2,)        1
Name: versions, dtype: int64

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM