使用 excel 列中每个唯一项的计数创建字典

Create dictionary with count of each unique item from an excel column

我在 excel 中有一列带有 header。该列包含 25-30 个唯一值,总共 28000 行。我希望我的输出是一个字典,键是列中的每个唯一项,值是它的计数

df1 = pandas.read_excel(file,sheet)
Counter(df1) 

以上 returns:

({"ColumnHeader":1})

然后我尝试将整个东西转换成一个列表

df2 = df1.values.tolist()

Counter(df2) 

上面 returns 这个错误信息:TypeError: unhashable type: 'list'

这似乎是一个相当常见的问题,但我仍然无法分解..请在这里帮助新手...

Counter 计算可迭代对象中的项目。当您遍历数据框时,它会遍历列名。这就是为什么 Counter 只是返回计数为 1 的列的名称。您需要计算数据框列中的项目,因此您需要执行以下操作:

Counter(df2['ColumnHeader'])

另请注意,当您执行 df1.values.tolist() 时,它会 returns 您的数据框以列表列表的形式出现。但是,Counter 只能用于可散列类型。列表不可散列。

不使用集合 return 字典的另一种方法是

dict(df1["column_header"].value_counts())