计算熊猫列中出现的False或True的次数

Ney*_*res 4 python count dataframe pandas

给定

patient_id  test_result has_cancer
0   79452   Negative    False
1   81667   Positive    True
2   76297   Negative    False
3   36593   Negative    False
4   53717   Negative    False
5   67134   Negative    False
6   40436   Negative    False
Run Code Online (Sandbox Code Playgroud)

如何在python中的列中计算False或True?

我一直在尝试:

# number of patients with cancer

number_of_patients_with_cancer= (df["has_cancer"]==True).count()
print(number_of_patients_with_cancer)
Run Code Online (Sandbox Code Playgroud)

WeN*_*Ben 11

所以你需要value_counts吗?

df.has_cancer.value_counts()
Out[345]: 
False    6
True     1
Name: has_cancer, dtype: int64
Run Code Online (Sandbox Code Playgroud)

  • +1@NeyJTorres 作为记录,您可以通过附加 `.loc[False]` 来获得 `False` 数字,如 `df.has_cancer.value_counts().loc[False]` 中所示。但是,当您只需要*或*`True` 或`False`(但不是两者)时,我认为使用coldspeed 的类似`(~df.has_cancer).sum()` 之类的方法会更容易。 (7认同)

cs9*_*s95 8

如果has_cancer有NaN:

false_count = (~df.has_cancer).sum()
Run Code Online (Sandbox Code Playgroud)

如果has_cancer没有NaN,则可以通过不必预先取消掩码来进行优化。

false_count = len(df) - df.has_cancer.sum()
Run Code Online (Sandbox Code Playgroud)

同样,如果你想只是真正的价值,这就是计数

true_count = df.has_cancer.sum()
Run Code Online (Sandbox Code Playgroud)

如果两者都想要

fc, tc = df.has_cancer.value_counts().sort_index().tolist()
Run Code Online (Sandbox Code Playgroud)


小智 8

number_of_patients_with_cancer = df.has_cancer[df.has_cancer==True].count()
Run Code Online (Sandbox Code Playgroud)


小智 7

0     True
1    False
2    False
3    False
4    False
5    False
6    False
7    False
8    False
9    False
Run Code Online (Sandbox Code Playgroud)

如果上面的熊猫系列被称为示例

example.sum()
Run Code Online (Sandbox Code Playgroud)

然后此代码输出 1,因为True该系列中只有一个值。得到计数False

len(example) - example.sum()
Run Code Online (Sandbox Code Playgroud)