Python 可变索引异构数据结构?
Python中是否有符合这些条件的数据类或类型 我正在尝试构建一个如下所示的对象:Python 可变索引异构数据结构?,python,pandas,tuples,Python,Pandas,Tuples,Python中是否有符合这些条件的数据类或类型 我正在尝试构建一个如下所示的对象: 实验数据 ID 1 示例信息1:字符串 示例信息2:字符串 数据帧_1:pandas数据帧 数据帧_2:pandas数据帧 ID 2 (等等) 现在,我正在使用一个dict来保存对象(“实验数据”),该对象包含每个ID的namedtuple。每个namedtuple都有一个用于连接到样本的相应数据的命名字段。这允许我对所有ID进行索引,并对每个ID下的所有字段进行索引 但是,在下游分析期间,我需要
- 实验数据
- ID 1
- 示例信息1:
字符串
- 示例信息2:
字符串
- 数据帧_1:
pandas数据帧
- 数据帧_2:
pandas数据帧
- 示例信息1:
- ID 2
- (等等)
- ID 1
dict
来保存对象(“实验数据”),该对象包含每个ID的namedtuple
。每个namedtuple
都有一个用于连接到样本的相应数据的命名字段。这允许我对所有ID进行索引,并对每个ID下的所有字段进行索引
但是,在下游分析期间,我需要更新和/或替换每个ID下的条目。由于元组是不可变的,所以这似乎是不可能的
是否有更好的实施方案 您可以使用一个dict of dict而不是一个dict of namedtuples。dict是可变的,因此您可以修改内部dict
考虑到您在评论中所说的每个数据帧-1和-2的结构具有可比性,您还可以通过向每个数据帧添加一列,其中包含跨所有行重复的
sample\u info\u 1
的值,以及sample\u info\u 2
的值,将所有数据帧分组到一个大数据帧中。然后,您可以将所有数据帧1合并成一个大数据帧,同样,对于数据帧2,也可以将所有数据合并成两个数据帧。(根据这些数据帧的结构,您甚至可以将它们合并为一个数据帧。)您可以使用dict of dict。或者,如果内部数据帧的结构是一致的,您可以使用更大的数据帧,将内部数据帧包含到某些列中。不确定这是否是您的意思,但Dataframe1和Dataframe2具有不同的结构。更重要的是,是否所有Dataframe1的结构(即每个ID的结构)在某种程度上是一致的(对于DataFrame2s也是如此)。你能描述一下内部数据帧的结构吗?是的。所有Dataframe1和Dataframe2在所有ID中共享相同的结构。每个ID都有两个关联的文件,我正在读取这些文件来创建df,但随后必须对其执行下游操作。那么,您不能只向每个数据帧添加两列,其中包含sample\u info\u 1
和sample\u info\u 2
(每行重复),然后合并所有数据帧吗?然后,您将只有两个包含所有数据的数据帧。(你甚至可以把他们合在一起)谢谢。正如我在评论中提到的,我发现dicts
的dict
解决方案在这里起作用,特别是在使用dict
类型的defaultdict
初始化后,例如ExperimentData=collections.defaultdict(dict)
。这允许您以后从循环中运行ExperimentData[sampleID]['sample\u info\u 1']='my char string'
等,如果条目已经存在,则更新该条目,而无需重新初始化整个dict(并丢失以前的条目)