在Pandas中的Dataframe中导入和打印Json对象

时间:2017-11-10 14:35:52

标签: python pandas dataframe

我有一个json文件,看起来像图中所示。 如何导入和打印熊猫中的所有数量和费率? 如何单独打印所有买卖数量的总和? 如何打印所有数值的总和大于x的值。例如:SUM(Qty> 5)

enter image description here

在原始格式中,数据就像这样

{"success":true,"message":"","result":{"buy":[{"Quantity":199538.30948659,"Rate":0.00000970},{"Quantity":62142.31715449,"Rate":0.00000968},{"Quantity":233476.03486058,"Rate":0.00000967},{"Quantity":75613.30879931,"Rate":0.00000966},{"Quantity":3109.14961399,"Rate":0.00000965},{"Quantity":66.22406639,"Rate":0.00000964},{"Quantity":401.06420081,"Rate":0.00000963},{"Quantity":186.93339628,"Rate":0.00000961},{"Quantity":122731.01165366,"Rate":0.00000960},{"Quantity":7718.27750144,"Rate":0.00000959},{"Quantity":802.00000000,"Rate":0.00000958},{"Quantity":2050.72163419,"Rate":0.00000956},{"Quantity":1000.00000000,"Rate":0.00000955}

3 个答案:

答案 0 :(得分:1)

您可以使用pandas.read_json()命令执行此操作。只需将你的json文件传递给函数,pandas就会为你创建一个数据帧。

这里是指向文档的链接,您可以在其中传递orient='records'之类的额外参数等,以告诉大熊猫使用什么作为数据帧列以及使用什么作为行数据等。

这里是链接:https://pandas.pydata.org/pandas-docs/stable/generated/pandas.read_json.html

一旦进入数据框,您就可以运行各种命令来计算买入和卖出的数量总和。在我认为运行数学计算时,将数据放在数据框中可以使生活更轻松。

答案 1 :(得分:1)

使用json_normalize并传递元路径:

import json
import pandas as pd

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

buy_df = pd.io.json.json_normalize(data['result'],'buy')
#Similarly for sell data if you have a separte entity named `sell`. 
sell_df = pd.io.json.json_normalize(data['result'],'sell')

输出:

   Quantity     Rate
0  199538.309487  0.00001
1   62142.317154  0.00001
2  233476.034861  0.00001
3   75613.308799  0.00001
4    3109.149614  0.00001

总结你可以做到

buy_df['Quantity'].sum()

从现在起,选择和索引数据请参考 - Indexing and Selecting Data - Pandas

答案 2 :(得分:1)

import pandas as pd

#change 'buy' for other results
data = pd.DataFrame(pd.read_json('file.json')['result']['buy'])

#for filtering
print(data.query('Quantity > 5').query('Rate > 0.00000966').sum())