python - 计算 DataFrame 每列值的出现次数

标签 python pandas dataframe

我有以下数据框:

df = pd.DataFrame(np.array([[4, 1], [1,1], [5,1], [1,3], [7,8], [np.NaN,8]]), columns=['a', 'b'])

    a    b
0   4    1
1   1    1
2   5    1
3   1    3
4   7    8
5   Nan  8

现在我想对从 1 到 9 的值的列执行 value_counts(),这应该给我以下结果:

    a    b
1   2    3
2   0    0
3   0    1
4   1    0
5   1    0
6   0    0
7   1    0
8   0    2
9   0    0

这意味着我只计算每列值 1 到 9 的出现次数。如何才能做到这一点?我想获得这种格式,以便之后可以应用 df.plot(kind='bar', stacked=True) 来获得离散值从 1 到 9 的堆叠条形图x 轴和 y 轴上 a 和 b 的计数。

最佳答案

使用pd.value_counts:

df.apply(pd.value_counts).reindex(range(10)).fillna(0)

enter image description here

关于python - 计算 DataFrame 每列值的出现次数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55053092/

相关文章:

python - 在 Django REST Framework (DRF) 中正确使用 "callable default function"

python - 使用 neo4j 和/或 python 查找节点的路径(深度)中的步骤

Python MySQLdb上传UnicodeEncodeError

python - 将占总数百分比的列添加到 Pandas 数据框

python - 创建两列之间存在差异的列时出现错误

R:在列表中应用函数

Python:正则表达式无法正常工作

python - 选择 Pandas 中特定值后面包含 NaN 的行

R - 使用向量列表中的名称的子集数据框列

python - Pandas:在循环中构造新数据帧时出现 "Returning a view versus a copy"警告