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

使用Dask生成多个不同名称CSV时遇到的问题求助

解决Dask循环生成单个CSV文件的问题

问题原因

Dask DataFrame是分布式结构,默认会按数据分区输出对应数量的CSV文件:

  • 第一种写法用*.csv作为后缀,Dask会将其视为通配符,每次循环的输出会覆盖之前的文件,最终只剩最后一次循环的2个分区文件。
  • 第二种写法中,Dask会把你指定的xxx.csv路径识别为文件夹名称,然后在该文件夹下生成对应分区的文件,因此出现13个文件夹、每个文件夹2个CSV的情况。

两种可行解决方案

方案1:转换为Pandas DataFrame写入

如果分组后的单份数据量不大,直接将Dask DataFrame转为Pandas后写入,完全和你熟悉的Pandas写法一致:

for i in range(13):
    df_temp = df1.groupby("temp").get_group(unique_cases[i])
    # 转换为Pandas DataFrame
    pd_df = df_temp.compute()
    pd_df.to_csv(f"to/my/path/{i}.csv", index=False)

方案2:使用Dask的single_file=True参数(Dask 2.16.0及以上版本支持)

如果不想转换为Pandas,可通过single_file参数强制Dask输出单个文件,无需手动处理分区:

for i in range(13):
    df_temp = df1.groupby("temp").get_group(unique_cases[i])
    df_temp.to_csv(f"to/my/path/{i}.csv", single_file=True, index=False)

注意事项

  • 根据需求添加index=False参数,避免写入冗余的索引列。
  • 若分组后的数据量极大,转Pandas可能导致内存溢出,优先选择方案2。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.23 07:24:23