来自多个字典列表的DataFrame,其中键是索引,值是列数据

如何解决来自多个字典列表的DataFrame,其中键是索引,值是列数据

我正在尝试从字典列表中用熊猫创建一个DataFrame,如下所示:


[{'3600': '12','7600': '1212343'},{'0': 0.0,'3600': 0.0,'7200': 0.0,'10800': 0.0,'14400': 0.0,'18000': 0.0,'21600': 0.0,'25200': 116.93828280645994} .... ]

我的列是项目列表:["col1","col2" ...]

我想要的是字典的键作为索引,字典的值应填充列。在此示例中:

                       col1                  col2
0                       0/NaN                0.0
3600                    12                   0.0
7600                    1212343              NaN
7200                    NaN                  0.0
10800                   NaN                  0.0
18000                   NaN                  0.0
21600                   NaN                  0.0
25200                   NaN                  116.93828280645994

因此,每个字典的值基本上表示列值。由于字典的大小可能不同,因此我需要添加NaN。

我以为我已经在这里Create a Dataframe from list of Dictionaries)的帮助下找到了这样的东西:


    columns = ["col","col2" ...]
    df_data = mydataasabove

    final_dict = defaultdict(list)

    for data in df_data:
        for key,value in data.items():
            final_dict[key].append(value)

    final_dict = dict(final_dict)

    df = pd.DataFrame.from_dict(final_dict,orient='index',columns=columns)

但这给了我这样的df:

                     col1                     col2
3600                   12                    0.0
7600              1212343                    NaN
0                       0                    NaN
7200                    0                    NaN
10800                   0                    NaN
14400                   0                    NaN
18000                   0                    NaN
21600                   0                    NaN
25200             116.938                    NaN

如您所见,这些值与我的列不正确对应。打印final_dict输出为:

{'3600': ['12',0.0],'7600': ['1212343'],'0': [0.0],'7200': [0.0],'10800': [0.0],'14400': [0.0],'18000': [0.0],'21600': [0.0],'25200': [116.93828280645994]}

我还尝试了Chainmap的一些方法

df = pd.DataFrame.from_dict(ChainMap(*nec_data),columns=['col1']) 但我无法添加多列。

也许有人可以借给我??将不胜感激!预先感谢

解决方法

您可以将其读取为数据框并转置,然后在df.renamef-strings的帮助下重命名以调整列名

pd.DataFrame(d).T.rename(columns=lambda x: f"col{x+1}")

          col1     col2
3600        12        0
7600   1212343      NaN
0          NaN        0
7200       NaN        0
10800      NaN        0
14400      NaN        0
18000      NaN        0
21600      NaN        0
25200      NaN  116.938

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?
Java在半透明框架/面板/组件上重新绘画。
Java“ Class.forName()”和“ Class.forName()。newInstance()”之间有什么区别?
在此环境中不提供编译器。也许是在JRE而不是JDK上运行?
Java用相同的方法在一个类中实现两个接口。哪种接口方法被覆盖?
Java 什么是Runtime.getRuntime()。totalMemory()和freeMemory()?
java.library.path中的java.lang.UnsatisfiedLinkError否*****。dll
JavaFX“位置是必需的。” 即使在同一包装中
Java 导入两个具有相同名称的类。怎么处理?
Java 是否应该在HttpServletResponse.getOutputStream()/。getWriter()上调用.close()?
Java RegEx元字符(。)和普通点?