Pandas 是多列的条件

Pandas is condition on multiple columns

我有一个数据框

col1    col2    col3    col4
A         F      F      F
B         F      A      B
C         B      A      C
D         S      A      F

我想说如果 A 和 F 在任何这些列中然后创建一个新列并输入 "Found"

col1    col2    col3    col4   output
A         F      F      F        Found
B         F      A      B        Found
C         B      A      C           0
D         S      A      F        Found

使用:

df['output']=np.where(df.eq('A').any(1) & df.eq('F').any(1),'Found',0)

另一种方法:

df['output']=(df.eq('A').any(1) & df.eq('F').any(1)).map({True:'Found',False:0})

输出:

  col1 col2 col3 col4 output
0    A    F    F    F  Found
1    B    F    A    B  Found
2    C    B    A    C      0
3    D    S    A    F  Found

您可以使用 pd.DataFrame.where():

df.where(lambda x: (x=='A') | (x=='F')).dropna(thresh=1)

试试这个:

df.loc[df.apply(lambda x: ((x=='F').any() & (x=='A').any()).any(),axis=1), 'output'] = 'Found'

df.fillna(0)