【问题标题】:Count number of values in an entire DataFrame计算整个 DataFrame 中的值的数量
【发布时间】:2019-06-18 20:09:26
【问题描述】:

我目前有 50 列和大约 50000 行的 DataFrame。我试图找出一个值(例如 2)出现在整个 DataFrame 中的总次数。

DataFrame 仅包含 0 到 7 之间的值。我可以使用以下代码执行单列的代码:

print(df['col1'].value_counts())

然后我尝试创建一个如下所示的 for 循环:

for cols in df:
    print(df[cols].value_counts())

这可行,但它会将其作为每列的单独结果打印出来。

我没有将结果按列分开,而是试图得到如下所示的结果,但要合并 DataFrame 中的所有列,而不仅仅是 1 列。

val    no.
7.0    165
3.0    127
5.0     118
6.0     112
2.0      98
4.0      88
1.0      64
0.0      21
Name: col1, dtype: int64

任何帮助将不胜感激!

【问题讨论】:

  • (df.values == 2).sum()?
  • 这很尴尬。您要回答这个问题,以便我将其标记为解决方案吗?

标签: python python-3.x pandas


【解决方案1】:

您可能需要检查第一个stack 然后value_counts,现在您可以从索引中选择您需要的内容

df.stack().value_counts()

【讨论】:

  • 超级有趣。我发现对于对象列,大型 DataFrame Counter 快得多 see this,但对于整数列 stack 可以快 2 倍。
【解决方案2】:

对于特定值:

(df.values == 2).sum()

或全部:

np.unique(df.values, return_counts=True)

【讨论】:

    【解决方案3】:

    你也可以试试Counter:

    from collections import Counter
    
    print(pd.DataFrame(Counter(df.values.flatten()), index=['Count']).T)
    

    【讨论】:

      猜你喜欢
      • 2017-06-05
      • 1970-01-01
      • 2021-12-14
      • 2018-07-05
      • 2022-07-07
      • 2019-03-11
      • 2022-12-22
      • 2019-03-14
      • 2023-03-11
      相关资源
      最近更新 更多