高效将Pandas DataFrame转为指定结构JSON Lines的方法(大数据场景)
高效转换Pandas DataFrame为指定结构的JSON Lines格式
示例输入数据
import pandas as pd data = { 'my_index': [1, 2], 'start': ['2023-12-28 00:00:00', '2023-12-29 00:00:00'], 'target': [['value1', 'value2'], ['value3']], 'dynamic_feat': [[['feat1', 'feat2'], ['feat3']], [['feat4']]] } df = pd.DataFrame(data)
期望输出的JSON Lines格式
{"my_index": 1, "features": {"start": "2023-12-28 00:00:00", "target": ["value1", "value2"], "dynamic_feat": [["feat1", "feat2"], ["feat3"]]}} {"my_index": 2, "features": {"start": "2023-12-29 00:00:00", "target": ["value3"], "dynamic_feat": [["feat4"]]}}
高效实现方案
直接用Pandas的矢量化操作,全程避免逐行迭代,完美适配大数据量场景:
# 第一步:把除my_index外的所有列打包成features列(每行对应一个字典) df['features'] = df.drop('my_index', axis=1).apply(dict, axis=1) # 第二步:保留目标列并直接导出为JSON Lines格式 # 输出到控制台 print(df[['my_index', 'features']].to_json(orient='records', lines=True)) # 如果要写入文件,用以下代码(内存效率更高) # df[['my_index', 'features']].to_json('output.jsonl', orient='records', lines=True)
方案优势说明
apply(dict, axis=1)是Pandas内部优化的矢量化操作,比手动循环效率高几个数量级,内存占用更低;to_json(orient='records', lines=True)直接在底层生成符合要求的JSON Lines格式,无需额外数据结构转换;- 全程基于Pandas原生优化逻辑,无需拆分数据集处理,适配百万级甚至更大规模的DataFrame。
内容的提问来源于stack exchange,提问作者tmhs
相关产品推荐
相关产品推荐

