gpt4 book ai didi

python - 将字典的 numpy ndarray 转换为 DataFrame

转载 作者:行者123 更新时间:2023-12-01 06:31:21 25 4
gpt4 key购买 nike

我已经在 stackoverflow 上搜索了此问题的解决方案 -> 但所有解决方案都与我的需求略有不同。

我有一个很大的 ndarray(大约 1.07 亿行),我们称之为 df:

    [{'A': 5, 'C': 3, 'D': 3},
{'A': 7, 'B': 9, 'F': 5},
{'B': 4, 'C': 7, 'E': 6}]

我需要将其尽可能高效地转换为 DataFrame。这是所需输出的示例:

     A    B    C    D    E    F
0 5.0 NaN 3.0 3.0 NaN NaN
1 7.0 9.0 NaN NaN NaN 5.0
2 NaN 4.0 7.0 NaN 6.0 NaN

我尝试过 pd.DataFrame(df)pd.DataFrame.from_dict(df) 但这些给了我输出:

     0
0 {'A': 5, 'C': 3, 'D': 3}
1 {'A': 7, 'B': 9, 'F': 5}
2 {'B': 4, 'C': 7, 'E': 6}

问题:如何将 df 转换为所需的输出?

编辑:

我尝试过anky_91的解决方案。这适用于列表 - 而不是 ndarray。我想避免转换为列表,因为列表中包含 1.07 亿个值会导致内存错误。

pd.DataFrame(df).sort_index(axis=1)

这仍然给我提供与 pd.DataFrame(df) 相同的输出。它输出一个包含一列且每行都有字典的 DataFrame。

最佳答案

我认为输入数据不同:

L =  [[{'A': 5, 'C': 3, 'D': 3}],
[{'A': 7, 'B': 9, 'F': 5}],
[{'B': 4, 'C': 7, 'E': 6}]]

print (pd.DataFrame(L))
0
0 {'A': 5, 'C': 3, 'D': 3}
1 {'A': 7, 'B': 9, 'F': 5}
2 {'B': 4, 'C': 7, 'E': 6}

可能的解决方案是扁平化:

from  itertools import chain
df = pd.DataFrame(chain.from_iterable(L)).sort_index(axis=1)
print (df)
A B C D E F
0 5.0 NaN 3.0 3.0 NaN NaN
1 7.0 9.0 NaN NaN NaN 5.0
2 NaN 4.0 7.0 NaN 6.0 NaN

如果输入数据是numpy数组,则使用@Code不同注释中的解决方案:

arr = np.array([{'A': 5, 'C': 3, 'D': 3},
{'A': 7, 'B': 9, 'F': 5},
{'B': 4, 'C': 7, 'E': 6}])

df = pd.DataFrame(arr.tolist()).sort_index(axis=1)
print (df)
A B C D E F
0 5.0 NaN 3.0 3.0 NaN NaN
1 7.0 9.0 NaN NaN NaN 5.0
2 NaN 4.0 7.0 NaN 6.0 NaN

关于python - 将字典的 numpy ndarray 转换为 DataFrame,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59898422/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com