【问题标题】:how to convert CSV file to Json file for below attached data using python/pandas如何使用 python/pandas 将 CSV 文件转换为以下附加数据的 Json 文件
【发布时间】:2021-08-06 13:27:06
【问题描述】:

我是 python 新手。我需要使用 python/pandas 将下面的 csv 文件转换为 Json 文件格式。 输入 CSV 文件:

ID  F_Name  L_Name  Address SSN     Phone
123 Sam     Doe     123     12345   111-111-1111
123 Sam     Doe     123     12345   222-222-2222
123 Sam     Doe     abc345  12345   111-111-1111
123 Sam     Doe     abc345  12345   222-222-2222

                

预期的输出 JSON 文件:

myschema = {
"ID":"123"
"F_Name":"Sam"
"L_Name":"Doe"
"Addess":"[123, abc345]"
"Phone":"[111-111-1111,222-222-2222]"
"SSN":"12345"
}

代码尝试

import json

filename = 'Input_Files/flat_test_file.txt'
dict1 = {}
fields = ['id','fname', 'lname', 'address', 'ssn','phone']
with open(filename) as fh:
    l = 1
    for line in fh:
        description = list(line.strip().split(",", 6))
        print(description)
        i = 0
        dict2 = {}
        while i < len(fields):
            dict2[fields[i]] = description[i]
            i = i + 1
        dict1[sno] = dict2
        l = l + 1
out_file = open("test2.json", "w")
json.dump(dict1, out_file, indent=6)
out_file.close()

输出获取

【问题讨论】:

  • 很难解决这个问题。
  • 您能展示一下到目前为止您尝试过的代码吗?
  • @Andy 我已经编辑了我的问题并将鳕鱼放在那里

标签: python pandas pandas-groupby


【解决方案1】:

这是我的建议:

阅读 pandas 文档中的“to_json”功能。

https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.to_json.html

import pandas as pd

df = pd.read_csv(your_file_dir_goes_here)

result = df.to_json(orient="index")
parsed = json.loads(result)

parsed

我得到了输出:

{'0': {'ID': 123,
  'F_Name': 'Sam',
  'L_Name': 'Doe',
  'Address': 123,
  'SSN': 12345,
  'Phone': '111-111-1111'},
 '1': {'ID': 123,
  'F_Name': 'Sam',
  'L_Name': 'Doe',
  'Address': 123,
  'SSN': 12345,
  'Phone': '222-222-2222'},
 '2': {'ID': 123,
  'F_Name': 'Sam',
  'L_Name': 'Doe',
  'Address': 'abc345',
  'SSN': 12345,
  'Phone': '111-111-1111'},
 '3': {'ID': 123,
  'F_Name': 'Sam',
  'L_Name': 'Doe',
  'Address': 'abc345',
  'SSN': 12345,
  'Phone': '222-222-2222'}}

【讨论】:

  • 我需要在问题中提到的列的多值输出。
【解决方案2】:

myschema = df.groupby('ID', as_index=False).agg(pd.unique).to_dict(orient='records')

【讨论】:

    猜你喜欢
    • 2021-11-21
    • 1970-01-01
    • 2019-03-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-28
    • 1970-01-01
    相关资源
    最近更新 更多