Панды это условие на несколько столбцов - PullRequest
2 голосов
/ 24 марта 2019

у меня есть датафрейм

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

Я хочу сказать, что если A и F в каком-либо из этих столбцов, создайте новый столбец и введите «Найдено»

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

Ответы [ 3 ]

3 голосов
/ 24 марта 2019

Использование:

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
1 голос
/ 24 марта 2019

Попробуйте это:

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

df.fillna(0)

0 голосов
/ 24 марта 2019

Вы можете использовать pd.DataFrame.where ():

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