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

如何从Pandas中迭代创建的DataFrame导出JSON文件

解决方案:按列值拆分DataFrame并导出到指定文件夹的JSON文件

别用exec()这种不安全的方式了,动态创建变量容易污染命名空间,调试起来也麻烦。直接用字典存储每个分组的DataFrame,既能清晰管理数据,又能顺利完成导出需求。

以下是完整实现代码:

from datetime import datetime
import pandas as pd
import os

# 准备原始数据
data1 = ['a', 'a', 'a','b','b','b','c','c','c']
data2 = [1,2,3,4,5,6,7,8,9]
data3 = [10,11,12,13,14,15,16,17,18]

data = {
    'Name': data1,
    'data2': data2,
    'data3': data3
}
df = pd.DataFrame(data)

# 1. 按Name列分组,把每个组的DataFrame存入字典
grouped_dfs = {name: group for name, group in df.groupby('Name')}

# 2. 生成当前日期的文件名格式(比如2024-05-20.json)
current_date = datetime.now().strftime("%Y-%m-%d")
filename = f"{current_date}.json"

# 3. 遍历字典,导出每个DataFrame到对应文件夹
for name, sub_df in grouped_dfs.items():
    # 创建以Name值命名的文件夹(如果不存在)
    folder_path = f"./{name}"
    os.makedirs(folder_path, exist_ok=True)
    # 拼接完整文件路径
    file_path = f"{folder_path}/{filename}"
    # 导出为JSON文件(可按需调整orient参数,比如'records'适合按行导出)
    sub_df.to_json(file_path, orient='records', indent=4)

关键步骤说明:

  • 用字典存储分组DataFrame:通过df.groupby('Name')直接按列值分组,用字典推导式把每个组的名称和对应DataFrame存起来,比exec()安全且易维护。
  • 自动创建文件夹:os.makedirs(..., exist_ok=True)会自动生成目标文件夹,即使文件夹已存在也不会报错。
  • 规范日期文件名:datetime.now().strftime("%Y-%m-%d")生成标准日期字符串,保证文件名统一有序。
  • JSON导出配置:orient='records'将每行数据转为独立JSON对象,indent=4让JSON文件更易读,你可以根据需求调整orient参数(比如'columns'、'index'等)。

如果非要用你原来的exec()方式(不推荐),也可以在循环里直接追加导出逻辑,但还是强烈建议用字典的实现方式,代码更清晰可靠。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.31 17:55:42