我一直想知道如何为我的数据框矢量化下面的函数。可以矢量化吗?
这是我的数据框:
date AGE
0 28/04/2017 13:08 25
1 28/04/2017 08:58 87
2 03/05/2017 07:59 23
3 03/05/2017 08:05 45
4 04/05/2017 08:05 26
5 05/05/2017 08:05 10
6 06/05/2017 08:05 56
7 07/05/2017 08:05 39
这是我要用于矢量化的功能:
def decision(value):
if value>40:
return 1
return 0
我不想使用np.where或任何lambda表达式。
答案 0 :(得分:2)
使用Series.gt
+ Series.astype
。
这比apply
方法更快,更高效。查询:when should I use apply
df['Age'].gt(40).astype(int)
#def decision(age):
# if age>40:
# return 1
# return 0
#
#df['AGE'].apply(decision)
答案 1 :(得分:0)
您可能希望使用numba
获得类似的效果。
@numba.jit(nopython=True, nogil=True)
def decision(arr_in: np.array, decision_num: int) -> np.array:
n = arr_in.shape[0]
decision_arr = np.empty(n, dtype=numba.int64)
for i in range(n):
if arr_in[i] > decision_num:
decision_arr[i] = 1
else:
decision_arr[i] = 0
return decision_arr
,然后创建列:
df['decision'] = decision(df['AGE'].to_numpy(), 40)
如果大熊猫的年龄大于0.24,请使用.values