首页 > 解决方案 > 连续计算值的频率?

问题描述

我有一个如下图所示的数据框(这是一个例子,原来的要大得多):

在此处输入图像描述

我试图回答这个问题,“有多少行有三个真值?两个真值?一个真值?”

我更愿意在 SQL 中执行此操作,但我正在努力寻找解决方案。我也在努力使用 Python 在 Pandas 中找到解决方案。在这一点上,我对任何一种解决方案都持开放态度。

如果有人有任何指示,我将不胜感激。我确定这是一个简单的解决方案,我只是还没有学会它,我找不到正确的方法来做到这一点。

标签: pythonsqlsqlitecount

解决方案


你可以试试:

(df.isin(["TRUE"])).sum(axis=1).value_counts()

df.isin(["TRUE"])而不是df == "TRUE"用于解决此处描述的问题的部分。

示例示例数据框:

import numpy as np
a = np.random.choice(["TRUE", "FALSE"], (5, 5))
df = pd.DataFrame(a)
df = df.reset_index()
print(df)

这给出了:

   index      0      1      2      3      4
0      0   TRUE   TRUE   TRUE  FALSE   TRUE
1      1  FALSE   TRUE  FALSE   TRUE   TRUE
2      2   TRUE   TRUE   TRUE  FALSE  FALSE
3      3  FALSE  FALSE   TRUE  FALSE   TRUE
4      4   TRUE   TRUE   TRUE   TRUE   TRUE

然后

(df.isin(["TRUE"])).sum(axis=1).value_counts()

给出:

3    2
5    1
4    1
2    1

即“TRUE”出现2行3次,1行5次,1行4次,1行2次。


推荐阅读