You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何创建以Pandas列为键、对应value_counts字典为值的字典?

解决方法:创建以Object类型列为键、value_counts字典为值的字典

我来帮你搞定这个问题!先说说你遇到的问题原因,再给你两种可行的实现方式:

为什么第一种写法报错?

你用了{}来推导,这在Python里是集合推导式,而集合要求所有元素都是可哈希的。你生成的元素是(列名, 对应value_counts字典)这样的元组,但元组里包含了不可哈希的字典类型,所以就抛出了TypeError: unhashable type: 'dict'的错误。而且你本来想要的是字典,不是集合,所以语法用错啦。

方法一:直接用字典推导式(推荐)

字典推导式的语法是{键: 值 for 变量 in 可迭代对象},正好符合你的需求。另外加上select_dtypes(include=['object'])可以精准筛选出所有object类型的列,避免处理非目标列:

import pandas as pd

# 假设你的DataFrame是df
value_counts_dict = {
    c: dict(df[c].value_counts()) 
    for c in df.select_dtypes(include=['object']).columns
}

方法二:把元组列表转成字典

你第二种写法得到的元组列表,其实可以直接用dict()函数转换成字典,这也是一种简单的方法:

# 先生成元组列表
value_counts_tuples = [
    (c, dict(df[c].value_counts())) 
    for c in df.select_dtypes(include=['object']).columns
]
# 转成字典
value_counts_dict = dict(value_counts_tuples)

举个实际例子

假设你有这样的DataFrame:

df = pd.DataFrame({
    'Fruit': ['Apple', 'Banana', 'Apple', 'Orange', 'Banana'],
    'Color': ['Red', 'Yellow', 'Red', 'Orange', 'Yellow'],
    'Quantity': [3, 2, 5, 1, 4]  # 非object类型,会被自动排除
})

运行上面的代码后,value_counts_dict的结果会是:

{
    'Fruit': {'Apple': 2, 'Banana': 2, 'Orange': 1},
    'Color': {'Red': 2, 'Yellow': 2, 'Orange': 1}
}

内容的提问来源于stack exchange,提问作者Austin

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 07:51:32