【问题标题】:JSON to CSV in Python with pandas带有熊猫的 Python 中的 JSON 到 CSV
【发布时间】:2021-05-15 00:56:04
【问题描述】:

我的 json 文件是这样的:

[{"traceId": "23245342fbvf3", "kind": "SERVER", "localEndpoint": {"serviceName": "client", "tags": {"host_ip": "10.42.0.180", "http.method": "POST"}, {"traceId": "veeg34vdfgd4", "duration": 1313178, "localEndpoint": {"serviceName": "product_service", "ipv4": "172.17.0.8"}}]

我使用这个脚本:

def parse_nested_json(json_d):
   result = {}
   for key in json_d.keys():
     if not isinstance(json_d[key], dict):
        result[key] = json_d[key]
     else:
        result.update(parse_nested_json(json_d[key]))
   return result

json_data = pd.read_json("data.json")
json_list = [j[1][0] for j in json_data.iterrows()]
parsed_list = [parse_nested_json(j) for j in json_list]
result = pd.DataFrame(parsed_list)
result.to_csv("new_data.csv", index=False)

这可以正常工作,但仅适用于 json 文件的第一部分。是否可以在 csv 中获取两个部分,指示标题,如 0/traceId(第一个)1/traceId(第二个)

【问题讨论】:

  • 帮助我们为您提供帮助。您希望您的 csv 看起来像什么以及现在的样子
  • 我从 'traceId' 到 'http.method' 的所有内容都很好,但第二列(POST 之后)没有任何内容
  • 您的 json 无效
  • 您的示例 JSON 无效。有效 JSON 的明显答案是 pd.json_normalize()

标签: python json pandas csv


【解决方案1】:

修复您的示例 JSON。 pd.json_normalize() 提取所有嵌入的dict。那你就可以to_csv()

js = [{'traceId': '23245342fbvf3',
  'kind': 'SERVER',
  'localEndpoint': {'serviceName': 'client',
   'tags': {'host_ip': '10.42.0.180',
    'http.method': 'POST',
    'traceId': 'veeg34vdfgd4',
    'duration': 1313178,
    'localEndpoint': {'serviceName': 'product_service',
     'ipv4': '172.17.0.8'}}}}]

pd.json_normalize(js).T

traceId kind localEndpoint.serviceName localEndpoint.tags.host_ip localEndpoint.tags.http.method localEndpoint.tags.traceId localEndpoint.tags.duration localEndpoint.tags.localEndpoint.serviceName localEndpoint.tags.localEndpoint.ipv4
0 23245342fbvf3 SERVER client 10.42.0.180 POST veeg34vdfgd4 1313178 product_service 172.17.0.8

【讨论】:

    猜你喜欢
    • 2019-07-22
    • 1970-01-01
    • 1970-01-01
    • 2021-02-25
    • 1970-01-01
    • 2019-12-20
    • 2020-12-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多