【问题标题】:Display columns of nested dictionary显示嵌套字典的列
【发布时间】:2025-12-26 19:55:12
【问题描述】:

我提取了一些加密货币数据,这些信息在嵌套字典中。我能够通过以下代码访问第一个字典的键以及价格和其他信息来“隔离”我想要的信息:

c = df['quote'][9]['USD']['price']

但是我想把它放在一张桌子上。我能够将字典转换为 DataFrame;但是,我无法将列内的嵌套字典从列中取出到它自己的数据框中来分配列。我想对所有 100 行执行此操作。我已经将数据框从 100 列转换为 1 列 100 行。数据框中的文本示例如下。我对python很陌生,但我尝试过函数,for循环,while循环。任何帮助将不胜感激。

0   {'price': 13574.815756488579, 'volume_24h': 30...
1   {'price': 385.0299121331971, 'volume_24h': 137...
2   {'price': 1.00094922868182, 'volume_24h': 4848...
3   {'price': 0.23929041807117, 'volume_24h': 2399...
4   {'price': 262.15395834212285, 'volume_24h': 31...

这是引用(*别)字典中嵌套字典的样子(每一行中的每个嵌套字典都包含以下所有信息):

#{'USD': {'price': 385.0299121331971,
   #'volume_24h': 13795520312.19678,
   #'percent_change_1h': 0.47915019,
   #'percent_change_24h': -1.02234395,
   #'percent_change_7d': -5.72396664,
   #'market_cap': 43594479232.334625,
   #'last_updated': '2020-10-30T22:10:03.000Z'}},

【问题讨论】:

    标签: python dataframe dictionary cryptocurrency


    【解决方案1】:

    您可以执行以下操作:

    df = df['column_name'].apply(pd.Series)
    

    其中 pd 是 pandas,df 是您的数据框,“column_name”是包含字典的列的名称。

    【讨论】:

    • 好建议!当我尝试调用“quote”的列名时,我仍然收到一个关键错误。 ``` KeyError: 'quote' ```
    • 据我了解,您的数据框中没有名为“quote”的列。数据框中包含字典的列的名称是什么?用名称替换“column_name”,它将起作用
    • 如果您的数据框有一个没有名称的单列,那么您可以先执行:df.columns = ["temporary"] 然后 df = df['temporary'].apply(pd.Series )
    【解决方案2】:

    如果我正确理解了需求,这段代码应该会得到你想要的结果。

    import pandas as pd
    
    dd = {
    'USD': {'price': 385.0299, 'volume_24h': 13795520312.19678, 'percent_change_1h': 0.4791},
    'BTC': {'price': 485.0299, 'volume_24h': 23795520312.19678, 'percent_change_1h': 0.5791},
    'ETH': {'price': 585.0299, 'volume_24h': 33795520312.19678, 'percent_change_1h': 0.6791},
    'BGD': {'price': 685.0299, 'volume_24h': 43795520312.19678, 'percent_change_1h': 0.7791}
    }
    
    d2 = {k:[] for k in dd[list(dd.keys())[0]]}
    for k in d2:
       for k2 in dd:
          d2[k].append(dd[k2][k])
    
    d2['sym'] = list(dd)
    
    print(d2,'\n')
    
    df = pd.DataFrame(d2)
    
    print(df.to_string(index=False))
    

    输出

    {'price': [385.0299, 485.0299, 585.0299, 685.0299], 
     'volume_24h': [13795520312.19678, 23795520312.19678, 33795520312.19678, 43795520312.19678], 
     'percent_change_1h': [0.4791, 0.5791, 0.6791, 0.7791], 
     'sym': ['USD', 'BTC', 'ETH', 'BGD']}
    
        price    volume_24h  percent_change_1h  sym
     385.0299  1.379552e+10             0.4791  USD
     485.0299  2.379552e+10             0.5791  BTC
     585.0299  3.379552e+10             0.6791  ETH
     685.0299  4.379552e+10             0.7791  BGD
    

    【讨论】:

    • 我用你在回复中的数据运行了你的代码,它可以工作!然而,它不适用于我 ipynb 中的数据。我运行了这个,我得到了错误“TypeError: unhashable type: 'dict'” USD 不是货币的名称,它是加密货币所代表的货币。该字典信息是 BTC 的加密货币信息。不确定这是否有帮助。
    最近更新 更多