【问题标题】:How can i convert this dictionary into dataframe如何将此字典转换为数据框
【发布时间】:2022-01-05 06:55:10
【问题描述】:

我想把这个字典转换成数据框

dd = {'NFO:BANKNIFTY2210633600CE': {'instrument_token': 12355586, 'last_price': 3825.3}
,'NFO:BANKNIFTY2210633700CE': {'instrument_token': 12619522, 'last_price': 3213.45}}

这里'NFO:BANKNIFTY2210633600CE' 这也是一个值,我希望它作为名称应该是“符号”的列下的一个值,并且我希望将“Last_price”作为一个列并在它的值下作为一个值。

例子-

Symbol                         Last_price
NFO:BANKNIFTY2210633600CE      3825.3
NFO:BANKNIFTY2210633700CE      3213.45

在这种形式下, 请帮帮我,解决这个问题。

【问题讨论】:

  • 这不是一本有效的字典,您可能在某处出现了复制粘贴错误。请编辑它
  • @Malo 实际上我是通过 zerodha api 得到这本字典的。
  • 这是我得到的格式,现在我要转换这个
  • @Malo 我还有其他方法可以安排吗?

标签: python dataframe dictionary


【解决方案1】:

从以下位置创建数据框:

  • 字典列表,格式为 {column1: value1, ...}
  • 行索引值列表
import pandas as pd

data = [
    {'NFO:BANKNIFTY2210633600CE': {'instrument_token': 12355586, 'last_price': 3825.3}},
    {'NFO:BANKNIFTY2210633700CE': {'instrument_token': 12619522, 'last_price': 3213.45}}
]

df = pd.DataFrame(data=[list(e.values())[0] for e in data], index=[list(e.keys())[0] for e in data])

print(df)
                           instrument_token  last_price
NFO:BANKNIFTY2210633600CE          12355586     3825.30
NFO:BANKNIFTY2210633700CE          12619522     3213.45

【讨论】:

    【解决方案2】:

    假设您的数据是一个字典列表,您可以先使用列表推导获取相关数据并将其转换为pd.DataFrame

    lst = [{'NFO:BANKNIFTY2210633600CE': {'instrument_token': 12355586, 'last_price': 3825.3}}, {'NFO:BANKNIFTY2210633700CE': {'instrument_token': 12619522, 'last_price': 3213.45}}]
    
    relevant_data = [(k, v['last_price']) for d in lst for k,v in d.items()]
    df = pd.DataFrame(relevant_data, columns=['Symbol','Last_price'])
    

    输出:

                          Symbol  Last_price
    0  NFO:BANKNIFTY2210633600CE     3825.30
    1  NFO:BANKNIFTY2210633700CE     3213.45
    

    【讨论】:

      【解决方案3】:

      我假设初始数据是一个大字典:

      import pandas as pd
      
      dd = {'NFO:BANKNIFTY2210633600CE': {'instrument_token': 12355586, 'last_price': 3825.3}
      ,'NFO:BANKNIFTY2210633700CE': {'instrument_token': 12619522, 'last_price': 3213.45}}
         
      data = [(k, v['last_price']) for k,v in dd.items()]
      
      df= pd.DataFrame(data, columns=['Symbol','Last_price'])
      
      print(df)
      

      输出是:

                            Symbol  Last_price
      0  NFO:BANKNIFTY2210633600CE     3825.30
      1  NFO:BANKNIFTY2210633700CE     3213.45
      

      【讨论】:

      • 您能详细说明一下好处吗?速度?
      猜你喜欢
      • 1970-01-01
      • 2019-05-26
      • 2020-07-06
      • 1970-01-01
      • 2022-07-05
      • 1970-01-01
      • 2021-04-22
      • 2019-08-02
      相关资源
      最近更新 更多