【问题标题】:JSON function output to CSV file - PythonJSON函数输出到CSV文件 - Python
【发布时间】:2021-12-21 17:29:39
【问题描述】:

我一直在尝试使用 populartimes 库中的一个函数,该函数返回一个 json 文件,其中包含有关使用此资源链接 https://github.com/m-wrzr/populartimes 的地点的信息。

import populartimes
import pandas as pd
import json
import csv

r = populartimes.get_id("API KEY","ChIJSYuuSx9awokRyrrOFTGg0GY")
display(r)

函数的输出是json:

{'id': 'ChIJSYuuSx9awokRyrrOFTGg0GY',
 'name': 'Gran Morsi',
 'address': '22 Warren St, New York, NY 10007, USA',
 'types': ['restaurant', 'food', 'point_of_interest', 'establishment'],
 'coordinates': {'lat': 40.714315, 'lng': -74.007766},
 'rating': 4.4,
 'rating_n': 407,
 'international_phone_number': '+1 212-577-2725',
 'populartimes': [{'name': 'Monday',
   'data': [0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0]},
  {'name': 'Tuesday',
   'data': [0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    30,
    40,
    50,
    54,
    48,
    32,
    0]},
  {'name': 'Wednesday',
   'data': [0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    31,
    43,
    52,
    53,
    45,
    32,
    0]},
  {'name': 'Thursday',
   'data': [0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    49,
    69,
    80,
    78,
    62,
    39,
    0]},
  {'name': 'Friday',
   'data': [0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    49,
    58,
    67,
    71,
    67,
    52,
    0]},
  {'name': 'Saturday',
   'data': [0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    63,
    77,
    92,
    100,
    92,
    69,
    0]},
  {'name': 'Sunday',
   'data': [0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0]}],
 'time_spent': [90, 210]}

我希望将 json 转换为 csv 文件,但通常的 pandas 库在输出上无法正常工作并返回不同的错误。我使用不同的方法进行了故障排除。

如果我使用

df = pd.DataFrame(r)

它返回 ValueError “将字典与非系列混合可能导致顺序不明确。”

如果我使用

data = json.dumps(r)
df = pd.DataFrame(data[populartimes])

返回类型错误:字符串索引必须是整数

如果我使用

data = json.loads(r)

返回TypeError:JSON对象必须是str、bytes或bytearray,而不是dict

基本上我要做的是将此 json 写入 csv 文件,其中 json 中的标题是 csv 文件中的列,而值将位于列下。在我能够将这个单个 json 写入 csv 之后,我希望使多个 json 条目成为 csv 文件成为可能。任何人都可以帮助将此 json 写入 csv 文件吗?

【问题讨论】:

  • 你能分享你遇到的错误吗?就目前而言,我们所要做的就是“有些东西坏了”。
  • 您想将输出附加到现有的 CSV 文件中,还是返回一个可能是 CSV 文件行的“字符串”?我不确定你要做什么。
  • 我想将输出转换为 csv 文件,例如 pandas_to.csv 创建一个数据帧的新 csv 文件。
  • 我已经更新了描述中的错误
  • 没有简单直接的方法可以将任意 JSON 格式化为 CSV。也许看到stackoverflow.com/questions/65338470/…

标签: python json pandas csv google-maps


【解决方案1】:

尝试使用此代码:

import pandas as pd
df = pd.read_json (r'Path where the JSON file is saved\File Name.json')
df.to_csv (r'Path where the new CSV file will be stored\New File Name.csv', index = None)

【讨论】:

  • json 不在任何文件中。该函数返回一个 json 输出。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-01-06
  • 1970-01-01
  • 2022-01-09
  • 1970-01-01
  • 2016-03-15
  • 2021-05-17
相关资源
最近更新 更多