作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试将带有键和相应列表的多个字典转换为 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)
这就是我需要的结果数据框:
我尝试使用explode
,如果我只有一本字典,它会起作用,但对其他字典进行递归操作则不起作用。然后,我尝试了这个Stackoverflow transformation solution中的一些解决方案但在某些情况下无法使解决方案发挥作用,因为我的示例中存在 NaN。
最佳答案
您需要fillna
包含 4 个项目的列表。不幸的是 fillna
不支持列表作为参数。
但是您可以利用stack
/unstack
(以及 unstack
的 fill_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/
我在 Java 中遇到异常处理问题,这是我的代码。当我尝试运行此行时出现编译器错误:throw new MojException("Bledne dane");。错误是: exception MojE
我刚刚开始学习asp.net。在你们的支持下,我希望我能从这个论坛学到更多东西。 我的问题是, 我在 asp.net 页面中有一个 TabContainer1,因为每个选项卡面板中有多个类似 (60)
我是一名优秀的程序员,十分优秀!