如何从嵌套列中提取 json 到数据帧

2024-03-29

我正在从 TD Ameritrade API 中提取股票数据,并且希望将其存储在 DataFrame 中。

从 API 中,我得到一个嵌套的 JSON 对象,当我将其放入数据框中时,我得到 4 列:索引、蜡烛、空、符号。然而,蜡烛内部是一个字典,我希望将其作为数据框中的单独列(“打开”,“关闭”,...)

我试过了json_normalize and pd.io.json.json_normalize

都没有给我想要的结果

import pandas as pd
import requests
from pandas.io.json import json_normalize

endpoint = r'https://api.tdameritrade.com/v1/marketdata/{}/pricehistory'.format('GOOG')

client_id = 'AMSAFI1234567'

payload = {'apikey':client_id,
       'periodType': 'day',
       'frequencyType': 'minute',
       'frequency' :'1',
       'period':'2',
       'endDate': '1556158524000',
       'startDate': '1554535854000',
       'needExtendedHoursData':'true'}

content = requests.get(url = endpoint, params = payload)

data = content.json()
print(data)

Output:

{'candles': [{'open': 1260.25, 'high': 1260.5, 'low': 1260.0, 'close': 1260.28, 
'volume': 2544, 'datetime': 1556029980000}, {'open': 1260.39, 'high': 1260.61, 
'low': 1260.3501, 'close': 1260.3501, 'volume': 1703, 'datetime': 
1556030040000}, {'open': 1260.35, 'high': 1260.59, 'low': 1260.07, 'close': 
1260.56, 'volume': 2156, 'datetime': 1556030100000}, {'open': 1260.56, 'high': 
1260.56, 'low': 1259.27, 'close': 1259.7, 'volume': 1320, 'datetime': 
1556030160000}, {'open': 1260.06, 'high': 1260.06, 'low': 1259.56, 'close': 
1259.56, 'volume': 800, 'datetime': 1556030220000},

....

'close': 1264.61, 'volume': 100, 'datetime': 1556146920000}, {'open': 1265.87, 
'high': 1266.0, 'low': 1265.87, 'close': 1266.0, 'volume': 232, 'datetime': 
1556147220000}], 'symbol': 'GOOG', 'empty': False}

Input:

pd.DataFrame(数据)

Output:

具有 4 列的数据框(“索引”、“蜡烛”、“空”、“符号”)。蜡烛栏是一本字典。我试图将字典中的所有键作为列,将键值作为数据帧中的行


你正在使用json_normalize1 级太高。您想要标准化/展平下面的数据data['candles']:

我在发布 api 密钥时也会非常小心。

import pandas as pd
import requests
from pandas.io.json import json_normalize

endpoint = r'https://api.tdameritrade.com/v1/marketdata/{}/pricehistory'.format('GOOG')

client_id = 'XXXXXXXXXXX'

payload = {'apikey':client_id,
       'periodType': 'day',
       'frequencyType': 'minute',
       'frequency' :'1',
       'period':'2',
       'endDate': '1556158524000',
       'startDate': '1554535854000',
       'needExtendedHoursData':'true'}

content = requests.get(url = endpoint, params = payload)

data = content.json()
df = json_normalize(data['candles'])

Output:

print (df)
         close       datetime       high        low       open  volume
0    1267.0000  1556035860000  1267.8600  1267.0000  1267.8600    1450
1    1266.8500  1556035920000  1266.8500  1266.8500  1266.8500     100
2    1266.5300  1556035980000  1266.7300  1266.2400  1266.6750    1290
3    1267.1613  1556036040000  1267.1613  1266.5400  1266.5500    1190
4    1267.4150  1556036100000  1267.4150  1266.8800  1266.8800    1100
5    1267.4299  1556036160000  1267.4299  1267.4299  1267.4299     250
6    1267.4540  1556036220000  1268.1800  1267.4540  1267.8100    1650
7    1267.0800  1556036280000  1267.5100  1267.0800  1267.4900     900
8    1265.6850  1556036340000  1267.1210  1265.5300  1267.1210    4148
9    1265.4600  1556036400000  1265.9600  1265.1703  1265.8300    2290
10   1266.2774  1556036460000  1266.4800  1265.4050  1265.4050    3341
11   1266.4684  1556036520000  1266.4684  1266.3247  1266.3247    1134
12   1266.8550  1556036580000  1267.0500  1266.4600  1266.4600    1500
13   1267.2550  1556036640000  1267.3500  1266.6401  1267.0393    1619
14   1267.2400  1556036700000  1267.2450  1267.2400  1267.2450     230
15   1266.8000  1556036760000  1267.4400  1266.8000  1267.4400     940
16   1266.0992  1556036820000  1266.5270  1266.0992  1266.5270    1523
17   1266.2599  1556036880000  1266.2700  1266.2599  1266.2700     600
18   1265.8400  1556036940000  1266.2350  1265.6800  1265.8400    2165
19   1265.5400  1556037000000  1265.8600  1265.5000  1265.5300    1400
20   1265.9650  1556037060000  1265.9900  1265.1200  1265.4532    1550
21   1265.6300  1556037120000  1265.7750  1265.4300  1265.5929    1580
22   1265.4469  1556037180000  1265.5300  1265.1000  1265.5300    1071
23   1265.6600  1556037240000  1265.7100  1265.6313  1265.7100     650
24   1266.1850  1556037300000  1266.1950  1265.6257  1265.6257     930
25   1266.1400  1556037360000  1266.2500  1265.9400  1266.1300    1050
26   1266.4250  1556037420000  1266.5750  1266.3000  1266.3294    1130
27   1266.4800  1556037480000  1266.6500  1266.3500  1266.6500     900
28   1266.7400  1556037540000  1266.8300  1266.5700  1266.7100    1103
29   1266.8450  1556037600000  1266.8600  1266.8100  1266.8600     600
..         ...            ...        ...        ...        ...     ...
585  1256.0000  1556136000000  1256.0000  1256.0000  1256.0000  211625
586  1258.0000  1556136360000  1258.0000  1256.0000  1256.0000    1154
587  1260.7100  1556136420000  1260.7100  1260.0000  1260.0000     550
588  1262.9500  1556136540000  1262.9500  1262.9500  1262.9500     100
589  1265.2600  1556136600000  1265.2600  1262.9500  1262.9500    2103
590  1264.5000  1556136660000  1264.5000  1263.9700  1263.9700     486
591  1264.0000  1556136840000  1264.0000  1264.0000  1264.0000     100
592  1265.6100  1556136900000  1265.6100  1265.5000  1265.5000     300
593  1264.0600  1556136960000  1264.0600  1264.0600  1264.0600     100
594  1265.1800  1556137020000  1265.1800  1265.1800  1265.1800     100
595  1264.0000  1556137140000  1264.0000  1264.0000  1264.0000     192
596  1264.9000  1556137320000  1265.1400  1264.9000  1264.9000     537
597  1264.6500  1556137620000  1264.6500  1264.6500  1264.6500     500
598  1264.7500  1556137680000  1264.7500  1264.7500  1264.7500     243
599  1266.4900  1556137740000  1266.4900  1266.4900  1266.4900     124
600  1268.0000  1556138580000  1268.0000  1268.0000  1268.0000     100
601  1267.2900  1556138700000  1267.2900  1267.2900  1267.2900     100
602  1268.9800  1556138820000  1268.9800  1268.9800  1268.9800     100
603  1269.0700  1556139240000  1269.1200  1269.0700  1269.1200     200
604  1256.0000  1556139420000  1256.0000  1256.0000  1256.0000     118
605  1269.0900  1556139480000  1269.0900  1269.0900  1269.0900     100
606  1270.0000  1556139540000  1270.0000  1270.0000  1270.0000     200
607  1267.3800  1556141040000  1267.3800  1267.3800  1267.3800     100
608  1268.0000  1556141100000  1268.0000  1268.0000  1268.0000     150
609  1268.6600  1556141940000  1268.6600  1268.6600  1268.6600     100
610  1265.0000  1556143620000  1265.0000  1265.0000  1265.0000     200
611  1265.0000  1556143740000  1265.0000  1265.0000  1265.0000     100
612  1256.0000  1556146620000  1256.0000  1256.0000  1256.0000     136
613  1264.6100  1556146920000  1264.6100  1264.6100  1264.6100     100
614  1266.0000  1556147220000  1266.0000  1265.8700  1265.8700     232

[615 rows x 6 columns]
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何从嵌套列中提取 json 到数据帧 的相关文章

  • 如何reshape()numpy中奇数行和偶数行的总和

    示例1 a np array 1 11 111 2 22 222 3 33 333 4 44 444 5 55 555 6 66 666 7 77 777 8 88 888 gt gt gt a array 1 11 111 2 22 22
  • Xgboost:bst.best_score、bst.best_iteration 和 bst.best_ntree_limit 有什么区别?

    当我使用 xgboost 训练我的数据时2 cates classification problem 我想使用提前停止来获得最佳模型 但我对在预测中使用哪一个模型感到困惑 因为提前停止将返回 3 个不同的选择 例如 我应该使用 preds
  • 自定义 pytest junitxml 失败报告

    我正在尝试内省测试失败并将附加数据包含到 junit xml 测试报告中 具体来说 这是对外部产品的一套功能测试 我想将产品的日志包含到故障报告中 使用找到的方法here https stackoverflow com questions
  • Python 是否有与 PHP 函数 htmlspecialchars() 等效的函数?

    Python 中是否有与 PHP 函数 htmlspecialchars 类似或等效的函数 到目前为止我发现的最接近的是htmlentitydefs entitydefs 我所知道的最接近的是cgi escape http docs pyt
  • 如何在 Python 3.2 程序中优雅地包含 Python 3.3 from None 异常语法?

    我正在尝试重新引发异常 以便为用户提供有关实际错误的更好信息 Python 3 3 包括PEP 409 http www python org dev peps pep 0409 它添加了raise NewException from No
  • PyCharm 虚拟环境和 Anaconda 环境有什么区别?

    当我在 PyCharm 中创建新项目时 它会创建一个新的虚拟环境 我读到 当我执行Python脚本时 它们是使用此环境中的解释器而不是系统环境来执行的 因此 如果我需要安装一些软件包 我只能将它们安装在这个环境中 而不是在系统环境中 这很酷
  • GSON 预期为 BEGIN_ARRAY,但实际为 BEGIN_OBJECT

    当我仅收到列表中的一项时 我收到此错误 我在服务器端 REST Web 服务中使用 Jersey 只有当列表返回一个元素并且它具有0 elements I get java lang NullPointerException但是当它有多个时
  • 打开文件对象的大小

    有没有办法找到当前打开的文件对象的大小 具体来说 我正在使用 tarfile 模块来创建 tarfile 但我不希望 tarfile 超过特定大小 据我所知 tarfile 对象是类似文件的对象 所以我想通用的解决方案会起作用 ls la
  • 尝试导入 cv2(opencv-python) 包时出错

    我正在尝试使用 cv2 opencv python 包访问我的网络摄像头 当我尝试导入它时 出现此错误 Traceback most recent call last File server py line 6 in
  • 如何将目录结构解析为字典?

    我有目录结构列表 例如 a b a b c a b c d a b c e a b c f g a b c f h a b c f i 我想将它转换成像树结构一样的字典 a b c d None e None f g None h None
  • 使用变量访问 Django 模板中的字典元素

    情况如下 我们渲染一个视图 return render request test html db object db object dict dict 在模板中 我们现在想要访问字典db object key 在Python中你通常会这样做
  • 用 org.Json 解析 Java 中的 JSON?

    我在这方面遇到了很多麻烦 我正在尝试进行更新 并且正在使用从 url 返回此内容的 api JSON downloadUrl URL fileName Name gameVersion Version name Name projectId
  • Python 比 C++ 更快、更轻吗? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 如何获得 GTK 中的默认颜色?

    Context 在 GTK 3 中 人们可以设置自己的主题 甚至默认主题 Adwaita 也提供两种变体 浅色和深色 当我编写自己的小部件 用Python 时 我需要获取这些颜色以避免在黑色上绘制黑色或在白色上绘制白色 Question 如
  • 如何从初始化参数中正确设置 Python 类属性

    作为一名 Python 程序员 我经常声明类似的类 class Foo def init self attr1 attr2 attr3 attr4 attr5 attr6 attr7 attr8 attr9 self attr1 attr1
  • pandas 数据框中的 count 和 countif

    我有一个 DF 如下所示 trainee course completed days overdue Ava ABC Yes 0 Bob ABC Yes 1 Charlie DEF No 10 David DEF Yes 0 Emily D
  • 减小散点图的文件大小

    我目前正在尝试减小散点图的文件大小 我的代码如下所示 plt scatter a1 b1 plt savefig test ps 其中 a1 b1 是大小为 400 000 左右的数组 它给出的文件大小为 7 8MB 我尝试过添加 plt
  • 如何在Python中的滚动平均计算中忽略NaN

    对于时间序列销售预测任务 我想创建一个代表过去 3 天平均销售额的功能 当我想预测未来几天的销售额时遇到问题 因为这些数据点没有销售数据 NaN 值 Pandas 提供rolling mean 但当窗口中的任何数据点为 NaN 时 该函数会
  • Python ctypes:SetWindowsHookEx 回调函数从未被调用

    我正在尝试用 Python 编写一个程序 该程序可以识别何时显示警报框 对话框 它正在处理多个监视器 我希望它在任务栏图标闪烁 弹出错误 通知等时在辅助监视器上显示可视化效果 据我所知 检测这些事件的方法是使用消息挂钩 如下所述 http
  • 在 Pandas DataFrame 中拆分列表

    我有一个包含多列的 csv 文件 使用 pandas 我将此 csv 文件读入数据帧 并有一个日期时间索引和五六个其他列 其中一列是时间戳列表 下面带有索引的示例 CreateDate TimeStamps 4 1 11 Timestamp

随机推荐

  • Spring真的不支持接口注入吗?

    我知道 Spring 不支持接口注入 而且我已经读过很多次了 但今天 当我看到 Martin Fowler 写的一篇关于国际奥委会的文章时 link http martinfowler com articles injection html
  • Oracle PIVOT,两次?

    我一直在尝试在 Oracle 11g 中不再使用 DECODE 来透视行 其中有一个方便的 PIVOT 函数 但我可能发现了一个限制 我试图为基表中的每个值返回 2 列 就像是 SELECT somethingId splitId1 spl
  • 将“var”传递给另一个方法

    我可能完全错过了这里的重点 但是 如何将 var 传递给另一个方法 我正在使用 linq 将 XML 加载到可枚举对象列表中 我有不同的对象类型 具有不同的字段 但无论使用哪个对象 我的过程的最后一步都是相同的 XNamespace xml
  • 单例中 getter 和 setter 的线程安全

    我在 Swift 3 中创建了一个简单的单例 class MySingleton private var myName String private init static let shared MySingleton func setNa
  • 在 VSTS Powershell 内联脚本任务中运行 drop SQL DB 时找不到类型 [Microsoft.SqlServer.Management.Smo.Server]

    在我的 VSTS 版本中 当我运行以下内联 Powershell 版本 5 1 脚本时 srv new Object Microsoft SqlServer Management Smo Server db New Object Micro
  • 如何以 Angular(v2 及以上)反应形式查找无效控件

    我在 Angular 中有一个反应形式 如下所示 this AddCustomerForm this formBuilder group Firstname Validators required Lastname Validators r
  • 协变类型 T 发生在不变位置

    我正在 Scala 中迈出第一步 我想让以下代码起作用 trait Gene T val gene Array T 编译器给出的错误是 covariant type T occurs in invariant position in typ
  • 在 React 中,如何将参数从子组件传递到父组件?

    在 React JS 中 我无法将值从子组件传递到父组件 这个问题是上一个问题的后续问题在 React JS 中 我如何告诉父组件子组件发生了什么事 https stackoverflow com questions 58403770 in
  • 访问 firebase firestore 数据库仪表板是否会被视为读取操作?

    我现在正处于该项目的开发阶段 目前该项目仅使用一个 Android 应用程序作为前端 Android 使用限制和分页进行查询 但阅读的文档总数远远超出了预期 我试图弄清楚这一点 为什么即使用户只有一个 我 阅读的文档数量却如此之大 如果阅读
  • 带红色圆圈的 Intellij Idea 文件

    我的 Intellij Idea 在 Project Explorer 中的文件名都有一个红色小圆圈 上面写着 J 那代表什么 IntelliJ 识别出这是一个 java 文件 但它没有标记为项目源的一部分 检查您的项目是否遵循 Maven
  • 如何防止在 Vim 中遍历跳转列表时离开当前缓冲区?

    I frequently have several buffers open in my Vim session This means that my jump list stores locations from several buff
  • 使用 Jest 模拟基于承诺的请求

    我正在尝试使用 Jest 对函数进行单元测试 但在处理 jest 模拟模块时遇到了一些麻烦 相当于 Nodejs 世界中的 rewire 或 proxyquire 我实际上正在尝试测试是否已使用一些参数在模拟模块上调用了间谍 这是我要测试的
  • 在 ASP.NET MVC 的 Windsor 配置中,控制器的生活方式是否应该始终是瞬态的?

    我遇到了一个问题 我认为 Html DropDownList 会在我第一次提交表单时回发所选值 但每个后续回发只会发布初始回发中的数据 因此 我将生活方式 瞬态 添加到为温莎城堡配置控制器的组件元素中 这解决了问题 但当然使回发需要更长的时
  • SQLAlchemy:“NoneType”对象没有属性“drivername”

    我正在尝试将我的 Flask 应用程序连接到本地 MySQL 数据库进行测试 我创建了一个 Flask 对象和一个类来表示成功连接后创建的示例表 这些是我的项目的本地环境变量 env LOCAL MYSQL URL mysql Userna
  • 如何从文件中提取多行的电子邮件标题

    我正在尝试在 Linux 上使用 sed 从电子邮件文件中提取 To 标头 问题是 To 标头可能位于多行上 e g To email protected cdn cgi l email protection email protected
  • 在Excel中使用VBA查找活动单元格的列标题名称

    我有一个从数据列表创建的表 如何找到每列的标题文本 当我选择活动单元格的标题时 它会高亮为橙色 但我想使用 Visual Basic 检索该值 我能够找到 Excel 工作表的地址 但我需要表格的列标题 Private Sub Worksh
  • Hibernate 验证器验证约束 if @Constraint(validated by = {})

    我有一个 Spring Web 应用程序 它使用 hibernate 验证器进行验证 我有位于不同项目中的约束注释 我需要在我的 Spring 项目中拥有针对这些约束的验证器 因为我需要一些服务来执行验证 所以情况是 我无法将约束验证器放在
  • 使用R识别PDF表格

    我正在尝试从一些 pdf 报告内的表格中提取数据 我看过一些使用 pdftools 和类似软件包的示例 我成功地获取了文本 但是 我只想提取表格 有没有办法使用 R 来识别和提取表格 很好的问题 我最近也在想同样的事情 谢谢 我做到了 与制
  • HP (Mercury) 质量中心的高质量替代品? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 如何从嵌套列中提取 json 到数据帧

    我正在从 TD Ameritrade API 中提取股票数据 并且希望将其存储在 DataFrame 中 从 API 中 我得到一个嵌套的 JSON 对象 当我将其放入数据框中时 我得到 4 列 索引 蜡烛 空 符号 然而 蜡烛内部是一个字