当函数有其他参数时,我不明白在创建函数时应该如何使用"row“参数。我想创建一个函数来计算我的dataframe "file“中的新列。
这样做效果很好:
def imputation(row):
if (row['hour_y']==0) & (row['outlier_idx']==True) :
val=file['HYDRO'].mean()
else :
val=row['HYDRO']
return val
file['minute_corr'] = file.apply(imputation, axis=1) 但这不起作用(我添加了一个参数):
def imputation(row,variable):
if (row['hour_y']==0) & (row['outlier_idx']==True) :
val=file[variable].mean()
else :
val=row[variable]
return val
file['minute_corr'] = file.apply(imputation(,'HYDRO'), axis=1) 发布于 2018-03-07 04:45:35
尝试这种矢量化方法:
file['minute_corr'] = np.where((file['hour_y']==0) & file['outlier_idx'],
file['HYDRO'].mean(),
file['HYDRO'])发布于 2018-03-07 05:13:41
使用apply函数,您还可以并行化计算。
file['minute_corr'] = file.apply(lambda row: (file['HYDRO'].mean() if (row['hour_y']==0) & (row['outlier_idx']==True) else row['HYDRO'] ), axis=1)发布于 2018-03-07 05:26:42
apply方法可以接受位置参数和关键字参数:
https://pandas.pydata.org/pandas-docs/stable/generated/pandas.Series.apply.html
最后一行try: Try:
file['minute_corr'] = file.apply(imputation,args=('HYDRO',), axis=1)https://stackoverflow.com/questions/49139581
复制相似问题