gpt4 book ai didi

python - 将带有键和相应列表的 python 字典转换为 pandas 数据框

转载 作者:行者123 更新时间:2023-12-02 01:34:08 25 4
gpt4 key购买 nike

我正在尝试将带有键和相应列表的多个字典转换为 pandas 数据框,但无法找到转换它们的正确方法。对于 pandas 数据框,键是索引列和列表

如何将带有键和相应列表(以值形式)的 python 字典转换为 pandas 数据框,其中键作为索引列,每个字典作为其他列?

这是一组字典示例和我的一个不起作用的解决方案:

import pandas as pd

dict1 = {'key_1': [1, 2, 3, 4], 'key_2': [5, 6, 7, 8], 'key_3': [9, 10, 11, 12]}
dict2 = {'key_1': ['a', 'b', 'c', 'd'], 'key_2': ['e', 'f', 'g', 'h'], 'key_3': ['i', 'j', 'k', 'l']}
dict3 = {'key_1': ['DD', 'CC', 'BB', 'AA'], 'key_3': ['II', 'JJ', 'KK', 'LL']}

df = pd.DataFrame.from_dict({'dict1':pd.Series(dict1),
'dict2':pd.Series(dict2),
'dict3':pd.Series(dict3)})

print(df)

这就是我需要的结果数据框:

Pandas dataframe from python dictionaries with keys and value lists

我尝试使用explode,如果我只有一本字典,它会起作用,但对其他字典进行递归操作则不起作用。然后,我尝试了这个Stackoverflow transformation solution中的一些解决方案但在某些情况下无法使解决方案发挥作用,因为我的示例中存在 NaN。

最佳答案

您需要fillna包含 4 个项目的列表。不幸的是 fillna 不支持列表作为参数。

但是您可以利用stack/unstack (以及 unstackfill_value 参数),然后 explode所有列:

(df
.stack()
.unstack(fill_value=[pd.NA]*4)
.explode(list(df))
)

输出:

      dict1 dict2 dict3
key_1 1 a DD
key_1 2 b CC
key_1 3 c BB
key_1 4 d AA
key_2 5 e <NA>
key_2 6 f <NA>
key_2 7 g <NA>
key_2 8 h <NA>
key_3 9 i II
key_3 10 j JJ
key_3 11 k KK
key_3 12 l LL

关于python - 将带有键和相应列表的 python 字典转换为 pandas 数据框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72791692/

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