英文:
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')
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。


评论