如何从字典创建数据框
How to create a dataframe from dictionaries
我是一个没有经验的程序员 (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 文件包含一个包含时间序列数据的块。我想将这个时间序列数据填充到一个 (pandas) 数据框中,这样它最终看起来像这样:
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.
您可以形成一个字典列表,例如 [{'time':0.00000,'f1':1.00,'f2':000},{'time':0.00000,'f1':1.00,'f2':000},.....]
并将此字典列表传递给 pandas 用于创建数据框的数据框
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 是 pandas 对象
这将以您期望的格式生成数据框
我是一个没有经验的程序员 (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 文件包含一个包含时间序列数据的块。我想将这个时间序列数据填充到一个 (pandas) 数据框中,这样它最终看起来像这样:
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.
您可以形成一个字典列表,例如 [{'time':0.00000,'f1':1.00,'f2':000},{'time':0.00000,'f1':1.00,'f2':000},.....]
并将此字典列表传递给 pandas 用于创建数据框的数据框
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 是 pandas 对象
这将以您期望的格式生成数据框