[英]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.