提问人:Vaiva Petrikaite 提问时间:8/12/2022 更新时间:8/13/2022 访问量:65
在 Pandas 中是否有 R 组合 lapply(split(df, df$group), fun) 的替代品?
Is there an alternative in Pandas for the R combination lapply(split(df, df$group), fun)?
问:
我想跑步
regr = ElasticNetCV(l1_ratio=l1_ratios, alphas=alphas_list).fit(x_train, y_train) pd.DataFrame(regr.predict(x_test),columns=['y_pred'])
对于根据组值的不同子集的 pandas 数据帧。我想避免以下情况:
for groupid in df['group'].unique():
code
pd.concat(...., axis=1)
一个简单的 apply() 将为每个观察值运行该函数,这是低效的。R 允许通过将数据帧拆分为不同的子集来使用 lapply()。熊猫有替代品吗?
答:
0赞
Michael Hodel
8/13/2022
#1
假设每个 , and 都是一个带有列 和 的数据帧,例如,您可以执行类似此类操作,将每个组的预测存储在字典中,并将组 ID 作为键。我怀疑分组,即代码的循环部分对运行时至关重要。x_train
y_train
x_test
group
l1_ratios
alphas_list
def fun(x_tr, y_tr, x_te):
regr = ElasticNetCV(l1_ratio=l1_ratios, alphas=alphas_list).fit(x_tr, y_tr)
pd.DataFrame(regr.predict(x_te), columns=['y_pred'])
res = {}
for groupid in df.groupby['group'].unique():
res[groupid] = fun(
x_train[x_train.group == groupid],
y_train[y_train.group == groupid],
x_test[x_test.group == groupid]
)
评论