从未知数量的Series创建DataFrame
我有一组叫做“仪器测量”的对象,这些对象是用户自定义的。每个对象都有一个标题,可以通过 Instrument_Measurement.name
来访问,还有一系列数据,可以通过 Instrument_Measurement.data
来获取(这两个方法都是用户自定义的)。
这些“仪器测量”对象是一个叫 list_instr_objects
的列表中的项目。这个列表里的项目数量是变化的,不能写死在代码里。
我需要创建一个数据框(Dataframe),每一列的标题是 Instrument_Measurement.name
,而每一列的数据则是对应的 Instrument_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)
不过这样做不太成功,结果只保留了每个仪器的第一个数据条目,而且这些条目的顺序看起来是随机的。我觉得可能是因为我把一个系列传给了字典,而应该传一个列表,但我想不出其他的做法或者怎么解决这个问题。
有什么想法吗?
非常感谢!
1 个回答
1
我觉得你可以用OrderedDict来保持顺序,然后用下面的代码来生成数据框。
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)