当前位置: 首页 > 面试题库 >

如何通过Python Pandas正确规范化json

连德水
2023-03-14
问题内容

我是Python的初学者。我想做的是通过Pandas加载外汇历史价格html" target="_blank">数据的json文件,并对数据进行统计。我已经遍历了有关Pandas和解析json文件的许多主题。我想将具有额外值和嵌套列表的json文件传递给pandas数据框。我在这里遇到了问题。

我有一个json文件’EUR_JPY_H8.json’

首先,我导入所需的库,

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

然后加载json文件,

with open('EUR_JPY_H8.json') as data_file:    
data = json.load(data_file)

我得到以下列表:

[{u'complete': True,
u'mid': {u'c': u'119.743',
  u'h': u'119.891',
  u'l': u'119.249',
  u'o': u'119.341'},
u'time': u'1488319200.000000000',
u'volume': 14651},
{u'complete': True,
u'mid': {u'c': u'119.893',
  u'h': u'119.954',
  u'l': u'119.552',
  u'o': u'119.738'},
u'time': u'1488348000.000000000',
u'volume': 10738},
{u'complete': True,
u'mid': {u'c': u'119.946',
  u'h': u'120.221',
  u'l': u'119.840',
  u'o': u'119.888'},
u'time': u'1488376800.000000000',
u'volume': 10041}]

然后我将列表传递给json_normalize。尝试获取嵌套在“ mid”下方的列表中的价格

result = json_normalize(data,'time',['time','volume','complete',['mid','h'],['mid','l'],['mid','c'],['mid','o']])

但是我得到了这样的结果, json_normalize输出

“时间”数据逐行细分为每个整数。我已经检查了相关文件。我必须将字符串或列表对象传递给json_normalize的第二个参数。如何在不中断的情况下传递时间戳。

我的预期输出是:

column = 
  index  |  time  | volumn  |  completed  |  mid.h  |  mid.l  |  mid.c  |  mid.o

问题答案:

您可以通过data而无需任何其他参数。

df = pd.io.json.json_normalize(data)
df

   complete    mid.c    mid.h    mid.l    mid.o                  time  volume
0      True  119.743  119.891  119.249  119.341  1488319200.000000000   14651
1      True  119.893  119.954  119.552  119.738  1488348000.000000000   10738
2      True  119.946  120.221  119.840  119.888  1488376800.000000000   10041

如果要更改列顺序,请使用df.reindex

df = df.reindex(columns=['time', 'volume', 'complete', 'mid.h', 'mid.l', 'mid.c', 'mid.o'])
df

                   time  volume  complete    mid.h    mid.l    mid.c    mid.o
0  1488319200.000000000   14651      True  119.891  119.249  119.743  119.341
1  1488348000.000000000   10738      True  119.954  119.552  119.893  119.738
2  1488376800.000000000   10041      True  120.221  119.840  119.946  119.888


 类似资料:
  • 我在验证SAML 2.0断言XML的签名时遇到了问题。我正在使用simpleSAMLphp项目中的SAML2库,该项目反过来又使用PHP库来签名XML并验证签名。 我收到我的合伙人的以下声明: 签名元素请求独占C14N规范化。库库将其规范化如下: 然而,我的搭档实际上签署的要素是: 但是,如果没有xmlns:xsi,情况基本相同。”http://www.w3.org/2001/XMLSchema-

  • 我正在使用 在我的代码中,用于规范化签名的行如下所示: 我的问题是,这种方法留给我的是一个使用method

  • 问题内容: 假设我有一个客户表: 此表也 没有 主键。但是,并且对于任何给定都 应该 是唯一的。 该表包含许多重复的客户并不少见。为了避免重复,使用以下查询仅隔离唯一的客户: 幸运的是,该表格传统上包含准确的数据。也就是说,从来没有任何冲突或任何冲突。但是,假设有冲突的数据确实将其放入表中。我希望编写一个将失败的查询,而不是为有问题的查询返回多行。 例如,我尝试此查询没有成功: 有没有办法使用标准

  • 我想使用Batchnormalization来规范化批次维度,但keras中的批次维度自然是无维度的。那我该怎么办呢。 keras示例显示,conv2d的轴为-1,这表示通道尺寸。 轴:整数,应规格化的轴(通常是特征轴)。例如,在具有data\u format=“channels\u first”的Conv2D层之后,在BatchNormalization中设置axis=1。

  • 我正在查看TensorFlow中的官方批处理规范化层(BN),但它并没有真正解释如何将其用于卷积层。有人知道如何做到这一点吗?特别重要的是,它应用并学习每个特征映射(而不是每个激活)的相同参数。以其他顺序,它应用并学习每个过滤器的BN。 在一个特定的玩具示例中,我想用MNIST上的BN(基本上是2D数据)执行conv2d。因此,我们可以做到: 其中,z=BN(z)将BN应用于每个过滤器创建的每个特

  • 问题内容: 我想知道是否有人对如何规范化数据库有任何建议。现在,我不是要设计结构,而是要实际将数据库数据从旧结构移动到新的规范化结构。我知道我可以编写类似PHP脚本的内容,但是我想知道是否有一种方法可以在SQL中进行。特别是MySQL。 **编辑:有人尝试过SwisSQL吗?这是一个迁移工具,但我不确定它是否能满足我的要求。 问题答案: 这是在脚本中标准化表的示例。我建议你做这样的事情 您将首先创