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

将CSV转换为Python嵌套字典/JSON:按ID分组时间戳流量数据

如何将含重复ID的时间序列CSV转换为嵌套字典/JSON

嘿,我懂你现在的需求——把这份每15分钟一条记录的CSV时间序列数据,转换成按ID分组的嵌套字典或者JSON格式对吧?之前用groupby没搞定可能是细节没处理到位,比如分组后的数据转换步骤不对,下面给你两种实用的解决方案,不管用不用第三方库都能搞定:

方法一:用Pandas快速实现(适合数据量大的场景)

如果你已经在使用Pandas,这个方法效率很高,能快速处理大量数据:

import pandas as pd
import json

# 读取CSV文件,确保header=0对应你的表头行
df = pd.read_csv('your_data.csv', header=0)

# 按ID分组,将每组的datetime和flow字段转成字典列表
nested_dict = df.groupby('ID').apply(
    lambda group: group[['datetime', 'flow']].to_dict('records')
).to_dict()

# 如果需要导出为JSON格式
json_output = json.dumps(nested_dict, indent=4)
print(json_output)

为什么之前的groupby可能失败?

大概率是你没在分组后正确提取需要的字段并转换格式。这里的to_dict('records')会把每组的每一行转成{'datetime': ..., 'flow': ...}的字典,再组合成列表,最后外层的to_dict()把分组结果转成以ID为键的字典,完美匹配你想要的结构。

方法二:纯Python实现(无需第三方库)

如果不想依赖Pandas,用标准库就能搞定,逻辑更直观,适合小体量数据:

import csv
import json

nested_dict = {}

with open('your_data.csv', 'r') as csv_file:
    # 用DictReader直接把每行转成字典,自动识别表头
    reader = csv.DictReader(csv_file)
    for row in reader:
        id_key = row['ID']
        # 构造单条记录的字典,只保留需要的字段
        record = {
            'datetime': row['datetime'],
            'flow': row['flow']
        }
        # 按ID分组:存在则追加,不存在则新建列表
        if id_key in nested_dict:
            nested_dict[id_key].append(record)
        else:
            nested_dict[id_key] = [record]

# 转成格式化的JSON输出
json_output = json.dumps(nested_dict, indent=4)
print(json_output)

一些注意事项

  • 确保CSV里的表头和代码中的字段名完全匹配(比如ID、datetime、flow的大小写不能错)
  • 如果需要把flow转成数值类型(而不是字符串),可以把row['flow']改成float(row['flow'])或者int(row['flow']),根据你的数据类型调整
  • 如果CSV里有缺失值,可以在读取时加入处理逻辑(比如Pandas里的dropna(),或者纯Python里判断字段是否为空)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.08 17:47:30