一种使用 Pandas 根据相应行将决策写入列的快速方法?

Gun*_*Gun 7 python pandas

假设我在数据框中有四列 A、B、C、D df

import pandas as pd

df = pd.read_csv('results.csv')
df 

A     B     C     D
good  good  good  good
good  bad   good  good
good  bad   bad   good
bad   good  good  good
Run Code Online (Sandbox Code Playgroud)

我想添加另一列result。其中的变量应基于相应行的变量。在这里,在我的情况下,如果相应行中至少有三种商品,即 A、B、C、D 列,则结果中的变量应该是validelse notvalid

预期输出:

A     B     C     D     results
good  good  good  good  valid
good  bad   good  good  valid
good  bad   bad   good  notvalid
bad   good  good  good  valid
Run Code Online (Sandbox Code Playgroud)

Qua*_*ang 5

您可以使用:

# columns of interest:
cols = ['A','B','C','D']

df['results'] = np.where(df[cols].eq('good').sum(1).ge(3), 
                         'valid', 'invalid')
Run Code Online (Sandbox Code Playgroud)

输出:

      A     B     C     D  results
0  good  good  good  good    valid
1  good   bad  good  good    valid
2  good   bad   bad  good  invalid
3   bad  good  good  good    valid
Run Code Online (Sandbox Code Playgroud)