【问题标题】:How do I convert a dictionary with array values containing nested lists into pandas dataframe?如何将具有包含嵌套列表的数组值的字典转换为 pandas 数据框?
【发布时间】:2020-09-13 19:24:22
【问题描述】:

我有一个包含嵌套列表数组的字典,其中每个字典键都引用一个唯一的数组。它的输出如下:

{'pop.2.q': array([[11.07967784],
   [11.07967784],
   [11.07967785],
   ...,
   [11.16404993],
   [11.16404993],
   [11.16404993]]), 'pop.2.v': array([[0.00011533],
   [0.00011533],
   [0.00011533],
   ...,
   [0.00014513],
   [0.00014513],
   [0.00014513]]), 'propagator.1.phi': array([[0.],
   [0.],
   [0.],
   ...,
   [0.],
   [0.],

我正在尝试将其转换为 pandas 数据框,其中每个字典键(即“pop.2.q”、“pop.2.v”等)都是一列。现在,我的数据框看起来像这样,代码如下:

df = pd.DataFrame(data=[Res.data], index=Res.time)

current df output

任何有关如何解压并正确填充 df 的帮助将不胜感激 - 谢谢!

【问题讨论】:

    标签: python arrays pandas dataframe


    【解决方案1】:

    假设字典中的所有值都是具有相同数量(展平)项目的列表,这应该可以解决问题:

    import numpy as np
    import pandas as pd
    df = pd.DataFrame(dict([(x,np.array(list(y)).flatten()) for x,y in d.items()]))
    

    假设 d 是你的字典。

    【讨论】:

    • 感谢您的回复。使用它时,它会引发:AttributeError: 'Series' object has no attribute 'flatten'。有什么想法吗?
    • 哦,我以为你的数组是一个 numpy 数组。如果它是 pd.Series ,您可以将其转换为 numpy 数组。我刚刚更新了我的答案。请参阅上面的更新版本。
    猜你喜欢
    • 2021-03-03
    • 2020-03-31
    • 2021-04-27
    • 1970-01-01
    • 2021-11-28
    • 2022-01-07
    • 2022-01-13
    • 2022-09-27
    • 1970-01-01
    相关资源
    最近更新 更多