所以我有一个看起来像这样的熊猫系列
df ['LABEL']
0 [0.0]
1 [0.0]
2 [1.0]
3 [3.0]
4 [3.0]
5 [3.0]
我想计算该熊猫系列的唯一值的数量,然后将其作为字典返回
但是,当我使用value_count()
时,它会返回错误
Exception ignored in: 'pandas._libs.index.IndexEngine._call_map_locations'
Traceback (most recent call last):
File "pandas\_libs\hashtable_class_helper.pxi", line 1652, in pandas._libs.hashtable.PyObjectHashTable.map_locations
TypeError: unhashable type: 'list'
但是找到唯一值后,我希望将其视为字典
预期输出为
{ 0.0 : 2, 1.0: 1, 3.0 : 3}
答案 0 :(得分:1)
假设您的所有列表都是单元素列表,则以下方法可以解决您的问题:
df['LABEL'].str[0].value_counts().to_dict()
#{3: 3, 0: 2, 1: 1}
如果列表中包含多个元素,并且您希望对所有元素进行计数,请让Counter
帮助:
from collections import Counter
#Replaced the last [3] with [3, 3, 3]
dict(Counter(df['LABEL'].sum()))
#{0: 2, 1: 1, 3: 5}
后一种方法比第一种方法快约10倍,并且适用于任何长度的列表。
答案 1 :(得分:0)
In [20]: df
Out[20]:
LABLE
0 [0.0]
1 [0.0]
2 [1.0]
3 [3.0]
4 [3.0]
5 [3.0]
In [19]: df["LABLE"].apply(lambda x: x[0]).value_counts().to_dict()
Out[19]: {3.0: 3, 0.0: 2, 1.0: 1}