按列值将Pandas DataFrame保存为独立JSON文件的高效方法
按Firm拆分DataFrame并保存为独立JSON文件
针对你的需求,这里有两种高效且适合初学者的实现方式,都是基于Pandas的groupby功能(这是处理分组数据的最优方式,比手动遍历行效率高得多):
方法一:groupby + apply(简洁写法)
这种写法代码紧凑,利用Pandas的分组聚合逻辑完成操作:
import pandas as pd import numpy as np # 你的示例数据 df = pd.DataFrame(np.array([['facebook', '15',"women tennis"], ['facebook', '20',"men basketball"], ['facebook', '30','club'], ['apple', "10","vice president"], ['apple', "100",'swimming contest']]),columns=['firm','id','text']) # 定义保存分组的函数 def save_group(group): # 获取当前分组的firm名称 firm = group['firm'].iloc[0] # 保存为JSON文件 group.to_json(f"{firm}.json", orient='records', force_ascii=False) # 对每个分组应用保存函数 df.groupby('firm').apply(save_group)
方法二:循环分组结果(直观易懂)
如果觉得apply的逻辑不够直观,也可以直接遍历分组后的结果,更适合新手理解:
import pandas as pd import numpy as np # 你的示例数据 df = pd.DataFrame(np.array([['facebook', '15',"women tennis"], ['facebook', '20',"men basketball"], ['facebook', '30','club'], ['apple', "10","vice president"], ['apple', "100",'swimming contest']]),columns=['firm','id','text']) # 遍历每个firm对应的分组 for firm_name, group_data in df.groupby('firm'): # 直接用firm名称作为文件名保存 group_data.to_json(f"{firm_name}.json", orient='records', force_ascii=False)
关键参数说明
orient='records':将DataFrame的每一行转换为一个JSON对象,最终生成一个JSON数组,这种格式可读性强,也方便后续读取解析。force_ascii=False:如果你的text字段包含中文等非ASCII字符,这个参数可以避免字符被转义,保留原始内容。
这两种方法处理10000行数据的速度都很快,因为groupby是Pandas内部优化过的操作,远快于手动逐行判断分组的方式。
内容的提问来源于stack exchange,提问作者Alicia_2024
相关产品推荐
相关产品推荐

