英文:
How to convert nested JSON API reponse to dataframe in python
问题
我有一个API,返回类似以下列表的数据:
{'NFO:AXISBANK23JUNFUT': {'instrument_token': 9156098, 'last_price': 967.55}, 'NFO:BAJAJ-AUTO23JUNFUT': {'instrument_token': 9156354, 'last_price': 4619.15}, 'NFO:BAJAJFINSV23JUNFUT': {'instrument_token': 9179138, 'last_price': 1544.1}, 'NFO:BAJFINANCE23JUNFUT': {'instrument_token': 9179394, 'last_price': 7390.85}, 'NFO:BALRAMCHIN23JUNFUT': {'instrument_token': 9180930, 'last_price': 395.95}}
当我尝试将其转换为数据框时,主要值会变为以下样式的标题:
NFO:AXISBANK23JUNFUT ... NFO:BALRAMCHIN23JUNFUT
instrument_token 9156098.00 ... 9180930.00
last_price 967.55 ... 395.95
但我需要将这些数据以以下方式反转:
instrument_token last_price
NFO:AXISBANK23JUNFUT 9156098 967.55
NFO:BALRAMCHIN23JUNFUT 9180930 395.95
英文:
I have one API which returns data for a list something like below:
{'NFO:AXISBANK23JUNFUT': {'instrument_token': 9156098, 'last_price': 967.55}, 'NFO:BAJAJ-AUTO23JUNFUT': {'instrument_token': 9156354, 'last_price': 4619.15}, 'NFO:BAJAJFINSV23JUNFUT': {'instrument_token': 9179138, 'last_price': 1544.1}, 'NFO:BAJFINANCE23JUNFUT': {'instrument_token': 9179394, 'last_price': 7390.85}, 'NFO:BALRAMCHIN23JUNFUT': {'instrument_token': 9180930, 'last_price': 395.95}}
When I try to convert it to dataframe, primary values goes in header something like below:
NFO:AXISBANK23JUNFUT ... NFO:BALRAMCHIN23JUNFUT
instrument_token 9156098.00 ... 9180930.00
last_price 967.55 ... 395.95
But I need to have this data available in opposite way as below:
instrument_token last_price
NFO:AXISBANK23JUNFUT 9156098 967.55
NFO:BALRAMCHIN23JUNFUT 9180930 395.95
答案1
得分: 0
首先,您需要将键设置为索引,将其他嵌套数据设置为列。您可以使用以下代码片段 Ref: Pandas from_records:
samples = {'NFO:AXISBANK23JUNFUT': {'instrument_token': 9156098, 'last_price': 967.55}, 'NFO:BAJAJ-AUTO23JUNFUT': {'instrument_token': 9156354, 'last_price': 4619.15}, 'NFO:BAJAJFINSV23JUNFUT': {'instrument_token': 9179138, 'last_price': 1544.1}, 'NFO:BAJFINANCE23JUNFUT': {'instrument_token': 9179394, 'last_price': 7390.85}, 'NFO:BALRAMCHIN23JUNFUT': {'instrument_token': 9180930, 'last_price': 395.95}}
# 将字典的键设置为索引列,嵌套值设置为记录。
df = pd.DataFrame.from_records(list(samples.values()), index=list(samples.keys()))
不包括代码部分的翻译。
英文:
First your need to set the keys as index and the other nested data as columns.
You can use the following snippet Ref: Pandas from_records
samples = {'NFO:AXISBANK23JUNFUT': {'instrument_token': 9156098, 'last_price': 967.55}, 'NFO:BAJAJ-AUTO23JUNFUT': {'instrument_token': 9156354, 'last_price': 4619.15}, 'NFO:BAJAJFINSV23JUNFUT': {'instrument_token': 9179138, 'last_price': 1544.1}, 'NFO:BAJFINANCE23JUNFUT': {'instrument_token': 9179394, 'last_price': 7390.85}, 'NFO:BALRAMCHIN23JUNFUT': {'instrument_token': 9180930, 'last_price': 395.95}}
# Set the dictionary keys as index column and the nesting values as records.
df = pd.DataFrame.from_records(list(samples.values()), index=list(samples.keys()))
答案2
得分: 0
首先,我将其转换为数据框(DF),然后使用DF的"Transpose"方法进行转换,这样我的数据就被转换为所需的格式。然后我可以使用脚本名称作为索引来查找数据。
英文:
First I converted into a DF and then used DF Tanspose method to convert this way my data got converted to desired format. and then I can use the script names as index for finding the data.
答案3
得分: 0
orient参数被设置为'index',用于指定字典的键应该作为DataFrame的索引。
import pandas as pd
api_response = {
'NFO:AXISBANK23JUNFUT': {'instrument_token': 9156098, 'last_price': 967.55},
'NFO:BAJAJ-AUTO23JUNFUT': {'instrument_token': 9156354, 'last_price': 4619.15},
'NFO:BAJAJFINSV23JUNFUT': {'instrument_token': 9179138, 'last_price': 1544.1},
'NFO:BAJFINANCE23JUNFUT': {'instrument_token': 9179394, 'last_price': 7390.85},
'NFO:BALRAMCHIN23JUNFUT': {'instrument_token': 9180930, 'last_price': 395.95}
}
df = pd.DataFrame.from_dict(api_response, orient='index')
英文:
you can use this
The orient='index' parameter is set to specify that the keys of the dictionary should be used as the index of the DataFrame.
import pandas as pd
api_response = {
'NFO:AXISBANK23JUNFUT': {'instrument_token': 9156098, 'last_price': 967.55},
'NFO:BAJAJ-AUTO23JUNFUT': {'instrument_token': 9156354, 'last_price': 4619.15},
'NFO:BAJAJFINSV23JUNFUT': {'instrument_token': 9179138, 'last_price': 1544.1},
'NFO:BAJFINANCE23JUNFUT': {'instrument_token': 9179394, 'last_price': 7390.85},
'NFO:BALRAMCHIN23JUNFUT': {'instrument_token': 9180930, 'last_price': 395.95}
}
df = pd.DataFrame.from_dict(api_response, orient='index')
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论