DataFrame切片两列以上后,使用apply进行条件判断时报错

import numpy as np
import pandas as pd
df = pd.DataFrame(([1,2,3,4],[3,4,5,6]),columns = list('abcd'))

 

#希望做出的效果是:对a,b两列的内容进行判断,如果大于等于3则返回文本1,否则返回文本0
#在使用下方代码的时候会报错
df[['a','b']].apply(lambda x:'1' if x >=3 else '0')

#但只对单列进行同样操作的时候则没有问题
df['a'].apply(lambda x:'1' if x >=3 else '0')

请求各位大神解答一下疑惑...

如果没有办法这样切片两列以上再apply的话,那用什么替代方法比较优雅?

对整个DataFrame用apply,如果是多列处理,传参是axis=1。对于您这个问题,具体代码如下所示:

import numpy as np
import pandas as pd
df = pd.DataFrame(([1,2,3,4],[3,4,5,6]),columns = list('abcd'))

def process(row):
    if row['a'] >= 3 and row['b'] >= 3:
        return '1'
    else:
        return '0'
    
df.apply(process, axis=1)