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或未来的读者不理解它。