Python 在dataframe中的多个列上循环

Python 在dataframe中的多个列上循环,python,pandas,for-loop,dataframe,Python,Pandas,For Loop,Dataframe,我有一个来自CSV文件的数据帧,该文件有61列和1mil行。其中25列Flag_1、Flag_2、…、Flag_25的每一行数据帧的值为真/假 我要做的是循环遍历每一列,以确定这些列中的整行是否有一个True,我只需要至少一个True。如果有一个True,那么一个新列Flag_All将为该行提供一个True值,如果没有,则为False 我可以将for循环用于这样的单个列 for index, x in data2['FLAG_1'].iteritems() : data2['FLAG_A

我有一个来自CSV文件的数据帧,该文件有61列和1mil行。其中25列Flag_1、Flag_2、…、Flag_25的每一行数据帧的值为真/假

我要做的是循环遍历每一列,以确定这些列中的整行是否有一个True,我只需要至少一个True。如果有一个True,那么一个新列Flag_All将为该行提供一个True值,如果没有,则为False

我可以将for循环用于这样的单个列

for index, x in data2['FLAG_1'].iteritems() :
    data2['FLAG_ALL'] =  data2['FLAG_1'] == True
但无法计算多个列的值

请尝试:

data2['FLAG_ALL'] = data2.any(axis=1,bool_only=True).values 

有关以下数据帧示例的任何

的详细信息:

df = pd.DataFrame({
    'flag_1': [False, False, True],
    'flag_2': [False, False, False],
    'flag_3': [True, False, False]})
您可以使用df.filter获取适当的列,这些列以标志、下划线和数字…开头,然后在行轴上应用任意值以获取整个布尔列:

df['flag_all'] = df.filter(regex='^flag_\d+$').any(axis=1)
这给了你:

  flag_1 flag_2 flag_3 flag_all
0  False  False   True     True
1  False  False  False    False
2   True  False  False     True

这很有效,但我想知道,如果我有其他标志,这会不会在这些列中选择“真”呢?我如何将此限制为仅列标志_1到标志_25?计算出它的列元素。谢谢你的帮助。