【发布时间】:2021-10-19 00:31:21
【问题描述】:
我有一个如下的熊猫数据框
data = {
'ID' : [0,0,0,0,0,1],
'DAYS': [293,1111,3020,390,210,10],
}
df = pd.DataFrame(data, columns = ['ID','DAYS'])
ID DAYS
0 0 293
1 0 1111
2 0 3020
3 0 390
4 0 210
5 1 10
我要做的是具有以下条件的简单应用函数,并将列输出为布尔值:
df['bool'] = df.apply(lambda x:( x['DAYS'] < 365),axis =1 )
我想优化这个 apply-lambda 部分.. 我设法在 numpy 数组中做到了
df['bool_numpy'] = np.where(df['DAYS'] <365 ,True ,False)
但我正在努力为 np.vectorize 方法应用相同的东西。
def copy_filter(df):
if df['DAYS'] <365:
return True
else:
return False
a= np.vectorize(copy_filter, otypes = [bool])
df['bool_vectorize'] = a(df['DAYS'])
但给了我一个错误。 任何帮助,将不胜感激。 而且,针对这个问题的任何其他优化技术也会很棒!
【问题讨论】: