我应该使用字典还是系列来保存一堆数据框?

Should I use the dictionary or the series to hold a bunch of dataframe?

假设我有几个数据帧:df1、df2、df3等。每个数据帧的标签是A1、A2、A3等。我想把这些信息作为一个整体来使用,这样我就可以传递它们。我想到了三种方法:

方法一

使用标签列表:labels=["A1", "A2", "A3"...] 和数据帧列表 dfs=[df1, df2, df3...]

方法二

使用字典:d={"A1": df1, "A2": df2, "A3": df3}

方法三

使用 pandas 系列:s=pd.Series([df1, df2, df3], index=["A1", "A2", "A3"])

我会依次使用标签和数据帧,因此我认为方法1和方法3应该是我的选择。但是,使用方法 1 需要我传递两个项目,而使用方法 3 我只需要保留一个对象。 将数据帧放在一个系列中是一种常见的做法吗?我很少看到有人这样做,这是否违反最佳做法?有没有更好的建议?

OrderedDict 可能比使用系列更传统。

from collections import OrderedDict
d = OrderedDict([("A1", df1), ("A2", df2), ("A3", df3)])

这很容易迭代:

for label, df in d:
    print(label, df)

也就是说,我看不出有什么充分理由不使用 pandas 系列。使用该系列的一个小优点是您可以使用点符号 s.A1s.A2 等以及使用类似字典的符号 s["A1"] 访问数据帧。使用系列,也可以相对容易地对数据帧进行排序,在中间插入额外的数据帧,或者在以后需要时将额外的元数据与它们相关联。

(请参阅 关于 Python 3.6 和 3.7 中的字典排序 - 如果使用 Python 3.7,您可以使用普通字典而不是 OrderedDict并且您不需要使用其他 'ordered' 行为。在 Python 3.6 中,插入顺序的保留是一个实现细节,不应依赖。)

方法二也可以。从 Python 3.6 开始,它也会记住创建的顺序。