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)
我有一个数据框
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)