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)