Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/365.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 从未知数量的系列创建数据帧_Python_Pandas_Series - Fatal编程技术网

Python 从未知数量的系列创建数据帧

Python 从未知数量的系列创建数据帧,python,pandas,series,Python,Pandas,Series,我有一个称为“仪器测量”的(用户定义的)对象列表。它们有一个标题,可通过Instrument\u Measurement.name访问,以及一系列可通过Instrument\u Measurement.data访问的数据(这两种方法都是用户定义的) 这些“仪器测量”对象是名为list\u instr\u objects的列表中的项目。项目数量(“仪器测量”)改变/无法硬编码 我需要为每个“仪器测量”创建一个数据框,其中列标题为Instrument\u Measurement.name,列标题为I

我有一个称为“仪器测量”的(用户定义的)对象列表。它们有一个标题,可通过
Instrument\u Measurement.name
访问,以及一系列可通过
Instrument\u Measurement.data
访问的数据(这两种方法都是用户定义的)

这些“仪器测量”对象是名为
list\u instr\u objects
的列表中的项目。项目数量(“仪器测量”)改变/无法硬编码

我需要为每个“仪器测量”创建一个数据框,其中列标题为
Instrument\u Measurement.name
,列标题为
Instrument\u Measurement.data
,列标题为相应的“仪器测量”

我试图通过创建这些对象的字典,然后将其转换为数据帧来实现这一点:

from collections import defaultdict
testdict = defaultdict(list)

for i in range(len(list_instr_objects)):
    testdict[list_instr_objects[i].name].append(list_instr_objects[i].data)
但这不起作用,只保留每个仪器的第一个数据条目,条目以看似随机的顺序出现。我想这是因为我正在向字典传递一个系列,在字典中我应该传递一个列表,但我想不出还有什么其他方法可以做到/如何解决这个问题

有什么想法吗


非常感谢。

我认为您可以使用OrderedICT来保持订单,并使用下面的代码生成数据帧

import pandas as pd
from collections import OrderedDict

testdict = OrderedDict()

for i in range(len(list_instr_objects)):
    testdict[list_instr_objects[i].name] = (list_instr_objects[i].data)

combined_data = pd.DataFrame(testdict)

列的顺序肯定是任意的(因为字典没有顺序):这有问题吗?另一个问题是,您不想将其附加到列表中,您只想将其设置为
testdict[list\u instr\u objects[i].name]=list\u instr\u objects[i].data
(并且它不必是默认dict,只需一个字典),不幸的是,在只使用字典而不附加到列表中之后,我仍然得到同样的问题,只有第一个元素。不幸的是,我确实需要保留顺序,因此我将研究一种非基于字典的方法。非常感谢。