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下的所有字段进行索引 但是,在下游分析期间,我需要

Python中是否有符合这些条件的数据类或类型

我正在尝试构建一个如下所示的对象:

  • 实验数据

    • ID 1

      • 示例信息1:
        字符串
      • 示例信息2:
        字符串
      • 数据帧_1:
        pandas数据帧
      • 数据帧_2:
        pandas数据帧
    • ID 2

      • (等等)
现在,我正在使用一个
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(并丢失以前的条目)