You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

Python将LabVIEW生成的CSV转JSON未获预期输出,求解决

解决CSV转指定格式JSON的Python方案

我来帮你搞定这个转换问题!根据你提供的CSV数据和目标JSON格式,我整理了两种Python实现方案,适配不同的使用场景:

方案一:用Pandas快速实现(推荐,代码简洁)

如果你已经安装了Pandas,这是最快捷的方式,代码如下:

import pandas as pd
import json

# 读取你的CSV文件(替换成实际文件路径)
df = pd.read_csv('your_data.csv')

# 把表头转换成目标格式:空格转下划线、全部小写
df.columns = [col.lower().replace(' ', '_') for col in df.columns]

# 构建你需要的JSON结构:将每列数据转为字符串列表
target_json = {
    "power_capacity_data": {
        column: df[column].astype(str).tolist() for column in df.columns
    }
}

# 打印格式化后的JSON(方便查看)
print(json.dumps(target_json, indent=4))

# 保存到JSON文件
with open('output.json', 'w') as f:
    json.dump(target_json, f, indent=4)

代码说明:

  • 列名转换:把原表头的Load Current转为load_currentPower Capacity转为power_capacity,完全匹配你示例里的键名风格。
  • 数据类型处理:用astype(str)把数值转成字符串,确保输出的是["1200","1600"]这种格式,而不是整数数组。
  • 结构嵌套:所有列数据都包裹在power_capacity_data字典下,和你要求的格式完全一致。

方案二:用Python标准库实现(无需额外安装包)

如果不想安装Pandas,用Python自带的csvjson模块也能实现:

import csv
import json

# 读取CSV并转换键名
converted_rows = []
with open('your_data.csv', 'r') as csv_file:
    reader = csv.DictReader(csv_file)
    # 先转换表头格式
    new_fieldnames = [name.lower().replace(' ', '_') for name in reader.fieldnames]
    for row in reader:
        # 转换每一行的键名
        converted_row = {new_fieldnames[i]: row[reader.fieldnames[i]] for i in range(len(new_fieldnames))}
        converted_rows.append(converted_row)

# 按列收集数据,构建目标结构
power_data = {}
for col in new_fieldnames:
    power_data[col] = [row[col] for row in converted_rows]

target_json = {"power_capacity_data": power_data}

# 输出或保存
print(json.dumps(target_json, indent=4))
with open('output.json', 'w') as f:
    json.dump(target_json, f, indent=4)

运行后输出的JSON格式:

{
    "power_capacity_data": {
        "rpm": [
            "1200",
            "1600"
        ],
        "load_current": [
            "30",
            "88"
        ],
        "battery_output": [
            "12",
            "18"
        ],
        "power_capacity": [
            "37",
            "55"
        ]
    }
}

我猜你之前没得到预期结果,大概率是这几个原因:

  • 没有把原表头的空格替换成下划线、转小写,导致键名不匹配;
  • 没有把数值转为字符串,输出了整数数组;
  • 结构层级不对,没把所有数据嵌套在power_capacity_data下面。

内容的提问来源于stack exchange,提问作者Code Name X

火山引擎 最新活动