我应该使用字典或系列来保存一堆数据帧吗?

an *_*use 3 python panel dataframe pandas

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

方法1

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

方法2

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

方法3

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

我将按顺序使用标签和数据框,因此我认为method1和method3应该是我的选择.但是,使用方法1需要我传递两个项目,而使用方法3我只需要保留一个对象.将数据帧放在一个系列中是一种常见做法吗?我很少看到人们这样做,是不是最佳做法?还有更好的建议吗?

Stu*_*art 5

一个OrderedDict可能比使用系列更传统.

from collections import OrderedDict
d = OrderedDict([("A1", df1), ("A2", df2), ("A3", df3)])
Run Code Online (Sandbox Code Playgroud)

这很容易迭代:

for label, df in d:
    print(label, df)
Run Code Online (Sandbox Code Playgroud)

那说我看不出任何强大的理由不使用熊猫系列.使用该系列的一个小优点是您可以使用点表示法等访问数据帧s.A1,s.A2以及使用类似字典的表示法s["A1"].使用序列,对数据帧进行排序,在中间插入其他数据帧或在以后需要时将其他元数据与之关联起来也相对容易.

(在Python 3.6和3.7中查看关于字典排序的这个问题 - 你可能能够使用普通的字典而不是OrderedDict使用Python 3.7并且你不需要使用其他'有序'行为.在Python 3.6中,保存插入顺序是一个实现细节,不应该依赖.)