【问题标题】:How to create a dataframe from dictionaries如何从字典创建数据框
【发布时间】:2020-05-10 19:26:52
【问题描述】:

我是一个没有经验的程序员 (python),我正在努力解决以下问题:

我想解析一个看起来像这样的 xml 文件(从原来的修改):

<traceData dataFrames="1" equip="ZZXX55_03_06">
    <dataFrame>
        <rec time="0.000000" f1="0.17773" f2="688.00006" f3="688.02917"/>
        <rec time="0.002000" f1="0.17773" f2="688.00006" f3="688.02917"/>
        <rec time="0.004000" f1="0.17432" f2="688.00000" f3="688.02917"/>
        <rec time="0.006000" f1="0.17432" f2="688.00000" f3="688.02917"/>
        <rec time="0.008000" f1="0.17432" f2="687.99988" f3="688.02917"/>
    </dataFrame>
</traceData>

所以 xml 文件包含一个带有时间序列数据的块。我想将此时间序列数据填充到(熊猫)数据框中,使其最终看起来像这样:

    time        f1          f2          f3
0   0.000000    0.17773     688.00006   688.02917
1   0.002000    0.17773     688.00006   688.02917
2   0.004000    0.17432     688.00000   688.02917
3   0.006000    0.00000     688.00000   688.02917
4   0.008000    0.17773     687.99988   688.02917

我从 xml 文件中解析数据的代码如下所示(部分来自原始文件):

.......
        xml_data = object.get()["Body"].read().decode("utf-8")
        tree = ElementTree(fromstring(xml_data))
        root = tree.getroot()
        for elem in root:
            if elem.tag == 'dataFrame':
                for rec in elem:
                    time=rec.attrib.get('time') 
                    f1=rec.attrib.get('f1')
                    f2=rec.attrib.get('f2')
                    f3=rec.attrib.get('f3')
                    Dictionary = { 'time':str(time) ,'f1':str(f1),'f2':str(f2),'f3':str(f3) }
                    print(Dictionary)

我的计划是首先将所有数据放入字典中,然后将所有行循环追加到大字典中,然后从那里将其填充到数据框中。当我努力将所有单独的字典塞进一个大字典时,我想......不!......必须有一种更简单的方法来创建如上所述的数据框。

谁能帮帮我?我很好奇……

提前致谢。

D.

【问题讨论】:

    标签: python pandas dictionary for-loop xml.etree


    【解决方案1】:

    您可以形成一个字典列表,例如 [{'time':0.00000,'f1':1.00,'f2':000},{'time':0.00000,'f1':1.00,'f2':000 },.....]

    并将这个 dict 列表传递给 pandas Data-frame 以创建数据框

    data= [{'time':0.00000,'f1':1.00,'f2':000},{'time':0.00000,'f1':1.00,'f2':000},.....]
    
    pd.DataFrame(data)
    pd.DataFrame.from_dict(data)
    pd.DataFrame.from_records(data)
    

    pd 是熊猫对象

    这将产生您期望的格式的数据框

    【讨论】:

      猜你喜欢
      • 2019-05-27
      • 1970-01-01
      • 1970-01-01
      • 2021-12-30
      • 2021-08-10
      • 2016-05-22
      • 2022-06-13
      • 2016-01-14
      相关资源
      最近更新 更多