从CSV文件创建JSON

2024-05-19 06:23:22 发布

您现在位置:Python中文网/ 问答频道 /正文

I have a csv file like this
RPM,Load Current,Output
1200,3,12
1500,4,13

And I have to create a json file in this format

SpikeData:{
"RPM" = [1200,1500],
"Load Current" = [3,4],
"Output" = [12,13]
}

I have written the following code to read the csv file and convert it to 
json.

import csv
import json

#Read CSV File
def read_csv():
    SpikeData={"RPM":[],"Load Current":[],"Output":[]}

    with open('power1.txt') as CSV_file_ref:
        Reader = csv.DictReader(CSV_file_ref)
        columns_of_first_line = Reader.fieldnames
        for row in Reader:
        SpikeData['RPM'].append(row[i] for i in range(len(column_of_first_line)))   
        print(SpikeData)

if __name__ == "__main__":
   read_csv()

当我打印数据时,我得到的输出是

    {
    'LoadCurrent': [],
    'BatteryOutput': [], 
    'PowerCapacity': [],
    'RPM': [<generator object <genexpr> at 0x0000000005B8A7E0>,
     <generator object <genexpr> at 0x0000000005BE07E0>,
     <generator object <genexpr> at 0x0000000005BE0630>]
   }

有人能帮我一下吗。你知道吗

I was expecting values getting saved in 'RPM' like 'RPM' = [1200,1500]

但是保存的值是

 'RPM': [<generator object <genexpr> at 0x0000000005B8A7E0>, 
  <generator object <genexpr> at 0x0000000005BE07E0>,
  <generator object <genexpr> at 0x0000000005BE0630>]

Tags: csvtoinjsonoutputobjecthaveload
2条回答
#csv file content
           
RPM,Load Current,Output
1200,3,12
1500,4,13
          

code:

import pandas as pd
import json
df = pd.read_csv('sample.csv')
csv_file = pd.DataFrame(pd.read_csv("sample.csv", sep = ",", header = 0, index_col = False))
data = json.loads(csv_file.to_json())
print data

输出:

{"RPM":{"0":1200,"1":1500},"Load Current":{"0":3,"1":4},"Output":{"0":12,"1":13}}

您需要稍微更改代码,不需要生成器表达式

import csv
import json

#Read CSV File
def read_csv():
    SpikeData={"RPM":[],"Load Current":[],"Output":[]}

    with open('power1.txt') as CSV_file_ref:
        Reader = csv.DictReader(CSV_file_ref)
        for row in Reader:
            SpikeData['RPM'].append(row['RPM'])
            SpikeData['Load Current'].append(row['Load Current'])
            SpikeData['Output'].append(row['Output'])
        print(SpikeData)

if __name__ == "__main__":
   read_csv()

输出:

{'Output': ['12', '13'], 'RPM': ['1200', '1500'], 'Load Current': ['3', '4']}

相关问题 更多 >

    热门问题