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