【问题标题】:Parse single list into multiple columns将单个列表解析为多列
【发布时间】:2021-08-21 16:45:50
【问题描述】:

问题:我需要为多个日期范围运行相同的 API,并将它们全部附加到数据框。我的 for 循环将每个 API 调用的数据框附加为一个列表。我希望将列表解析为 API 调用通常返回的列并将它们全部附加在一起。

earnings_info = []
for earnings_api in earnings_df['earnings_api']:
   response = requests.get(earnings_api, headers={'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.95 Safari/537.36'})
   df = json_normalize(response.json())
   earnings_info.append(df)
   sleep(1) 

earnings = pd.DataFrame(earnings_info)

这是我收到的输出的顶部

这是没有 for 循环的单个 API 调用的输出,我期望输出为

【问题讨论】:

  • 你能显示你的API的输出格式吗
  • 下图是API预期的输出格式
  • get api 调用返回什么?
  • 您可能希望存储一次列名,然后使用earnings_info.append(df.values.tolist()),然后在创建合并的 DataFrame 时提供列名。您正在重用 earnings_df 变量...这是有意的吗?
  • 我不确定是否诚实。因为 API 调用允许的日期范围有限制,所以我需要运行几个以获取必要的信息。我有点希望循环只会创建一个类似于运行 1 次调用的数据帧(如下图所示)并继续追加,但显然不是这样。感谢您的帮助。将给 Earnings_info.append(df.values.tolist()) 一个机会。

标签: python pandas list dataframe for-loop


【解决方案1】:

感谢 DS_London,我能够解析每个 API 调用的不同行。但是,当我将列表合并到数据框中时,每一行都有自己的列,并且不同的 API 调用被赋予不同的行。此处显示:

希望对数据进行转置,使其看起来与原帖中的底部图片相似。

编辑:下面是返回的单帧布局

【讨论】:

  • json_normalize返回的单帧布局是什么?
  • 在上面添加了一个编辑,所以我可以添加图片
  • 我认为您的原始代码非常接近。将最后一行更改为 Earnings = pd.concat(earnings_info, ignore_index=True)
  • 老兄,我明白了!非常感谢,这给我带来了如此麻烦。我们都很幸运有你这样的人。再次感谢。
猜你喜欢
  • 2017-01-29
  • 1970-01-01
  • 1970-01-01
  • 2020-01-11
  • 2017-05-06
  • 2022-10-23
  • 2014-06-05
  • 2018-11-16
  • 1970-01-01
相关资源
最近更新 更多