循环遍历数据框

时间:2016-08-30 16:24:58

标签: python pandas for-loop dataframe

我有一个CSV文件的数据框,该文件有61列和1mil行。这些列中的25列(Flag_1, Flag_2, ..., Flag_25)具有True/False作为数据帧的每一行的值。

我尝试做的是遍历每一列以确定这些列中的整行是否存在True,我只需要至少一个为true。如果有一个True然后是一个新列,Flag_All将为该行设置True值,否则为False。

我可以将for循环用于单个列,如此,

for index, x in data2['FLAG_1'].iteritems() :
    data2['FLAG_ALL'] =  data2['FLAG_1'] == True

但无法找出多列。

2 个答案:

答案 0 :(得分:4)

给出一个示例数据框:

df = pd.DataFrame({
    'flag_1': [False, False, True],
    'flag_2': [False, False, False],
    'flag_3': [True, False, False]})

您可以使用df.filter获取相应的列(以flag开头,下划线然后是数字......),然后在行轴上应用any()以获取整个布尔列:

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 :(得分:0)

请尝试:

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

任意() http://pandas.pydata.org/pandas-docs/stable/generated/pandas.DataFrame.any.html

的更多信息