从未知数量的Series创建DataFrame

0 投票
1 回答
748 浏览
提问于 2025-04-17 23:52

我有一组叫做“仪器测量”的对象,这些对象是用户自定义的。每个对象都有一个标题,可以通过 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)

撰写回答