Pandas:包含n个真布尔列值中的任意一个的行计数


df_con = df[['Traffic_Signal', 'Crossing', 'Junction', 'Bump', 'Railway']]

我有一个布尔值的数据帧。我想创建一个所有上述列都为True的情况的总数。

我开始用iterrows循环遍历df,但是我得到了我不熟悉的错误…任何指导是感激的!

这是我最接近(我认为)的尝试:

df_con = df[['Traffic_Signal', 'Crossing', 'Junction', 'Bump', 'Railway']]
cols = ['Traffic_Signal', 'Crossing', 'Junction', 'Bump', 'Railway']
count = 0
for index, row in df_con.iterrows():
for col in cols:
if df_con.loc[col] == True:
count += 1
break
print(count)

我建议您使用.any()方法获得该行的布尔值,然后使用.sum()结果获得最终计数。

下面是一个非常简单的例子,使用我自己的列和数据。

import pandas as pd
df = pd.DataFrame(
{
"excluded": [0, 1, 2, 3],
"x": [True, True, True, False],
"y": [True, False, False, False],
"z": [True, True, False, False],
}
)

dff = df[["x", "y", "z"]]
count = dff.any(axis="columns").sum()
print(count)  # Gives expected result of 3

最新更新