Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/css/34.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 基于现有列指定真/假条件_Python_Pandas - Fatal编程技术网

Python 基于现有列指定真/假条件

Python 基于现有列指定真/假条件,python,pandas,Python,Pandas,我需要在验证条件时指定真/假值。 具体来说,我有数据帧 col1 col2 col3 col4 col5 col6 col7 col8 col9 Number1 True False True False True False True False Number2 False False False False False False False False Number3 True Fa

我需要在验证条件时指定真/假值。 具体来说,我有数据帧

col1      col2    col3   col4   col5    col6   col7    col8   col9
Number1   True   False   True   False   True   False   True   False
Number2   False  False   False  False   False  False   False  False
Number3   True   False   False  False   False  False   False  False
Number4   False  False   False  False   False  True    False  False
我需要根据真/假值创建一个新列。如果至少有一个值为True,则在新列中指定True;否则,如果所有值都为False,则指定False

从上面的例子中,我应该:

col1      col2    col3   col4   col5    col6   col7    col8   col9     col10
Number1   True   False   True   False   True   False   True   False    True
Number2   False  False   False  False   False  False   False  False    False
Number3   True   False   False  False   False  False   False  False    True
Number4   False  False   False  False   False  True    False  False    True
我试过了

if (df['COL1'], df['COL2'], df['COL3'], df['COL4'], df['COL5'], df['COL6'], df['COL7'], df['COL8'], df['COL9']).any():
                df[index,'COL10'] = True
            else:
                df[index,'COL10'] = False
但这赋予了所有真正的价值


你能帮我得到正确的输出吗?非常感谢

只要做
任何事

df.loc[:,'col2':].any(1)
0     True
1    False
2     True
3     True
dtype: bool

#df['col10']=df.loc[:,'col2':].any(1)

你在这里做了两件错事。其中一个在行中迭代失败,第二个在表达式中涉及col1。 这是我用和你相似的方式尝试过的

df['col10'] = False
for index, row in df.iterrows():
    if row['col2'] or row['col3'] or row['col4'] or row['col5'] or row['col6'] or row['col7'] or row['col8'] or row['col9']:
        df.iloc[index,9] = True
    else:
        df.iloc[index,9] = False
这一问题的单一解决办法是:

df['col10'] = df.loc[:,'col2':].any(1)

您可能想澄清一下,缩写
df.loc[:,“col2::]
等同于
df.loc[:,[“col2”,“col3”,“col4”,“col5”,“col6”,“col7”,“col8”,“col9”,“col10”]
。实际上,您不想使用这种速记,因为OP在条件中不包含
col10
。@jakub-original-df没有col10~您是对的——我错了。但你们的答案将受益于速记的解释,以防OP或未来的读者不理解它。