我在 excel 中有一列带有标题。该列包含 25-30 个唯一值,总长度为 28000 行。我希望我的输出是一个字典,键是列中的每个唯一项目,值是它的计数
df1 = pandas.read_excel(file,sheet)
Counter(df1)
以上回报:
({"ColumnHeader":1})
然后我尝试将整个内容转换为列表
df2 = df1.values.tolist()
Counter(df2)
以上返回此错误消息:TypeError: unhashable type: 'list'
这似乎是一个相当常见的问题,但我仍然无法分解它..请在这里帮助新手...
Counter
计算可迭代对象中的项目。循环访问数据帧时,它会循环访问列名称。这就是为什么Counter
只是返回计数为 1 的列的名称。您需要对数据帧列中的项目进行计数,因此需要执行以下操作:
Counter(df2['ColumnHeader'])
另请注意,当您执行此操作df1.values.tolist()
时,它会以列表列表的形式返回数据帧。但是,Counter
只能使用可哈希类型。列表不可哈希处理。
不使用集合返回字典的另一种方法是
dict(df1["column_header"].value_counts())