为每一行创建的熊猫DataFrame

海登

我正在尝试将JSON中的数据从API传递到Pandas DataFrame。我无法pandas.read_json使用API​​数据,因此我确定这不是最佳解决方案,但是我目前正在for loop运行JSON来提取所需的值。

这是我所拥有的:

import json
import urllib.request
import pandas as pd

r = urllib.request.urlopen("https://graph.facebook.com/v3.1/{page-id}/insights?access_token={access-token}&pretty=0&metric=page_impressions%2cpage_engaged_users%2cpage_fans%2cpage_video_views%2cpage_posts_impressions").read()

output = json.loads(r)

for item in output['data']:
    name = item['name']
    period = item['period']
    value = item['values'][0]['value']

    df = [{'Name': name, 'Period': period, 'Value': value}]

    df = pd.DataFrame(df)

    print(df)

以下是API的JSON摘录:

    {
  "data": [
    {
      "name": "page_video_views",
      "period": "day",
      "values": [
        {
          "value": 634,
          "end_time": "2018-11-23T08:00:00+0000"
        },
        {
          "value": 465,
          "end_time": "2018-11-24T08:00:00+0000"
        }
      ],
      "title": "Daily Total Video Views",
      "description": "Daily: Total number of times videos have been viewed for more than 3 seconds. (Total Count)",
      "id": "{page-id}/insights/page_video_views/day"
    },

我现在面临的问题是由于For循环(我相信),每一行数据都被插入到自己的DataFrame中,如下所示:

               Name Period  Value
0  page_video_views    day    465
               Name Period  Value
0  page_video_views   week   3257
               Name   Period  Value
0  page_video_views  days_28   9987
               Name Period  Value
0  page_impressions    day   1402

我如何像这样将它们全部轻松地传递到同一DataFrame中?

               Name Period  Value
0  page_video_views    day    465
1  page_video_views   week   3257
2  page_video_views  days_28   9987
3  page_impressions    day   1402

同样,我知道这很可能不是最好的解决方案,因此非常欢迎您提供有关如何改进任何方面的建议。

耶斯列尔

您可以创建字典列表并传递给DataFrame构造函数:

L = []
for item in output['data']:
    name = item['name']
    period = item['period']
    value = item['values'][0]['value']

    L.append({'Name': name, 'Period': period, 'Value': value})

df = pd.DataFrame(L)

或使用list comprehension

L = [({'Name': item['name'], 'Period': item['period'], 'Value': item['values'][0]['value']}) 
       for item in output['data']]

df = pd.DataFrame(L)
print (df)
               Name Period  Value
0  page_video_views    day    634

测试样品:

output = {
  "data": [
    {
      "name": "page_video_views",
      "period": "day",
      "values": [
        {
          "value": 634,
          "end_time": "2018-11-23T08:00:00+0000"
        },
        {
          "value": 465,
          "end_time": "2018-11-24T08:00:00+0000"
        }
      ],
      "title": "Daily Total Video Views",
      "description": "Daily: Total number of times videos have been viewed for more than 3 seconds. (Total Count)",
      "id": "{page-id}/insights/page_video_views/day"
    }]}

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

熊猫根据条件为每一行创建唯一的ID

熊猫为每一行分配其bin的均值

为mySQL中的每一行创建弹出框

从每一行创建字典字典并将每一行导出为python中的json文件

为熊猫数据框的每一行替换一列中的字符串

将一列的每一行存储为字典值熊猫

导出文件的每一行(最后一行除外),以使用AWK为每一行创建一个新文件

从分组框中的另一个DataFrame的每一行创建DataFrame?

为熊猫中的每一行动态选择匹配的列子集

为熊猫数据框中的每一行选择切片/列范围

为熊猫中的每一行分配组的更有效方法

按索引列表为每一行选择熊猫列

熊猫对每一行求和直到为零然后保留零

为熊猫数据框中的每一行应用 linspace

如何创建函数并应用于熊猫的每一行?

熊猫:遍历每一行,提取特征并创建新列

熊猫根据不同数据框上每一行的信息创建新的数据框

如何在熊猫DataFrame的每一行上运行函数

将熊猫DataFrame的每一行转换为单独的Json字符串

将熊猫DataFrame的每一行转换为嵌套的JSON对象

在熊猫DataFrame的每一行中保留前n个非NaN单元

在熊猫DataFrame的每一行上起作用,但不生成新列

在熊猫DataFrame的每一行中跨多列查找模式

如何在Python中为数据框的每一行创建唯一的XML

在MyBatis中为结果集的每一行创建一个单独的对象

为从MySQL获取的数组的每一行创建一个div

在python中为Panda数据框的每一行创建一个Radar Chart

F#CSV-为每一行从列数据创建一个数组

在MS SQL表中为另一表中的每一行创建多行