gpt4 book ai didi

python - 加快 Pandas 应用功能

转载 作者:行者123 更新时间:2023-12-02 09:45:56 29 4
gpt4 key购买 nike

对于相对较大的 Pandas DataFrame(几十万行),我想创建一个应用函数结果的系列。问题是该功能不是很快,我希望它能以某种方式加快速度。

df = pd.DataFrame({
'value-1': [1, 2, 3, 4, 5],
'value-2': [0.1, 0.2, 0.3, 0.4, 0.5],
'value-3': somenumbers...,
'value-4': more numbers...,
'choice-index': [1, 1, np.nan, 2, 1]
})

def func(row):
i = row['choice-index']
return np.nan if math.isnan(i) else row['value-%d' % i]

df['value'] = df.apply(func, axis=1, reduce=True)

# expected value = [1, 2, np.nan, 0.4, 5]

欢迎任何建议。

更新

通过预缓存所选列可以实现非常小的加速(~1.1)。 func 将更改为:

cached_columns = [None, 'value-1', 'value-2', 'value-3', 'value-4']
def func(row):
i = row['choice-index']
return np.nan if math.isnan(i) else row[cached_columns[i]]

但我希望能有更大的加速......

最佳答案

我认为我得到了一个很好的解决方案(加速约 150)。

诀窍不是使用apply,而是进行智能选择。

choice_indices = [1, 2, 3, 4]
for idx in choice_indices:
mask = df['choice-index'] == idx
result_column = 'value-%d' % (idx)
df.loc[mask, 'value'] = df.loc[mask, result_column]

关于python - 加快 Pandas 应用功能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31363908/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com