You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python中如何对pandas DataFrame列多核并行应用多个函数

解决方案

实现思路

  • 这里用轻量的joblib库实现多核并行计算,它对数值计算任务的并行封装非常友好,无需手动管理进程池
  • 先对col2的每个值一次性执行三个目标函数,再把结果批量合并回原DataFrame,减少进程通信开销
  • 注意:小数据量下并行的进程调度开销会比串行计算更高,建议数据量超过10万行再用并行方案

你提供的代码里第三个函数名写成了function,以下示例统一修正为function3避免语法报错

完整代码示例

import pandas as pd
from joblib import Parallel, delayed
from multiprocessing import cpu_count

# 示例数据
df = pd.DataFrame(
    {'col1': ['LA','Boston','Phoenix','Toronto'], 'col2': [2,3,4,5]},
    columns=['col1', 'col2']
)

# 三个目标函数
def function1(x):
    return x**2
def function2(x):
    return x**3
def function3(x):
    return x**4

# 并行执行,n_jobs=-1表示使用所有CPU核心
parallel_result = Parallel(n_jobs=-1)(
    delayed(lambda x: (function1(x), function2(x), function3(x)))(val) 
    for val in df['col2']
)

# 把结果转成DataFrame合并到原数据
df[['col2_f1', 'col2_f2', 'col2_f3']] = pd.DataFrame(parallel_result, index=df.index)

print(df)

运行结果

col1  col2  col2_f1  col2_f2  col2_f3
0       LA     2        4        8       16
1   Boston     3        9       27       81
2  Phoenix     4       16       64      256
3  Toronto     5       25      125      625

可选替代方案:用原生multiprocessing库实现

如果不想额外安装第三方库,也可以用Python自带的multiprocessing模块实现:

from multiprocessing import Pool, cpu_count

# 把三个函数打包成单输入的任务函数
def apply_all_funcs(x):
    return function1(x), function2(x), function3(x)

if __name__ == '__main__':
    # 初始化进程池,调用所有CPU核心
    with Pool(cpu_count()) as pool:
        result = pool.map(apply_all_funcs, df['col2'])
    # 合并计算结果到原DataFrame
    df[['col2_f1', 'col2_f2', 'col2_f3']] = pd.DataFrame(result, index=df.index)

内容的提问来源于stack exchange,提问作者ivandd

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 13:57:05