Python 在dataframe中的多个列上循环
我有一个来自CSV文件的数据帧,该文件有61列和1mil行。其中25列Flag_1、Flag_2、…、Flag_25的每一行数据帧的值为真/假 我要做的是循环遍历每一列,以确定这些列中的整行是否有一个True,我只需要至少一个True。如果有一个True,那么一个新列Flag_All将为该行提供一个True值,如果没有,则为False 我可以将for循环用于这样的单个列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
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?计算出它的列元素。谢谢你的帮助。