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

如何用Dask替代Pandas?现有Pandas代码求转换方案

用Dask替代Pandas实现你的Excel处理逻辑

以下是对应原Pandas代码的Dask实现,同时标注关键差异点:

import dask.dataframe as dd
import pandas as pd

newfilename = "test.xlsx" 
cols = ['A', 'B', 'C', 'D']

# 1. 用Dask读取Excel(依赖openpyxl/xlrd,与Pandas一致)
dask_df = dd.read_excel(
    "old_test.xlsx", 
    header=1, 
    names=cols, 
    usecols=cols,
    converters={'A': int, 'B': int, 'C': int},
    engine="openpyxl"  # 显式指定引擎,避免版本兼容问题
)

# 2. 提取全空行的索引(Dask需先compute拿到本地数据)
full_null_rows = dask_df[dask_df.isnull().all(axis=1)].index.compute()

# 3. 拆分Dask DataFrame为多个子数据集
dask_df_list = []
prev_idx = 0
for idx in full_null_rows:
    sub_df = dask_df.loc[prev_idx:idx-1]
    dask_df_list.append(sub_df)
    prev_idx = idx + 1
# 补充最后一段未被拆分的数据
if prev_idx < len(dask_df):
    dask_df_list.append(dask_df.loc[prev_idx:])

# 4. 处理每个子数据集:去全空行 + 分组聚合
processed_dfs = []
for sub_df in dask_df_list:
    # 移除全空行
    cleaned_sub = sub_df.dropna(how='all')
    # 分组聚合:必须指定meta声明返回结构
    aggregated = cleaned_sub.groupby(['A', 'B', 'D'])['C'].apply(
        lambda x: ','.join(map(str, x)),
        meta=('C', 'object')
    ).reset_index()
    # 重新排列列顺序
    reordered = aggregated[['A', 'B', 'C', 'D']]
    processed_dfs.append(reordered)

# 5. 写入多Sheet Excel(Dask无原生多Sheet支持,转Pandas处理)
with pd.ExcelWriter(newfilename, engine="xlsxwriter") as writer:
    for i, ddf in enumerate(processed_dfs):
        pdf = ddf.compute()
        pdf.to_excel(writer, sheet_name=f'Sheet{i}', index=False)

关键差异说明

  • 读取阶段:Dask的dd.read_excel参数与Pandas基本对齐,但建议显式指定引擎(如openpyxl),避免环境依赖导致的兼容问题。
  • 全空行索引获取:Dask采用延迟计算模式,必须调用.compute()将全空行索引转为本地列表后,才能进行DataFrame拆分。
  • 分组聚合:Dask的groupby.apply必须传入meta参数,明确声明聚合后返回列的名称与数据类型,否则无法完成延迟计算的任务调度。
  • 多Sheet写入:Dask暂无原生多Sheet写入Excel的支持,需将每个Dask DataFrame通过.compute()转为Pandas DataFrame后,再借助Pandas的ExcelWriter完成写入。

注意事项

  • 若处理超大型Excel文件,可通过调整Dask的blocksize参数控制分区大小,避免内存溢出。
  • 确保安装所需依赖:pip install dask[complete] openpyxl xlsxwriter

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.28 11:05:09