假设我有几个数据帧:df1,df2,df3等。每个数据帧的标签是A1,A2,A3等。我想整体上使用此信息,以便我可以通过它们。我想到了三种方法:
使用标签列表:labels=["A1", "A2", "A3"...]
和数据帧列表dfs=[df1, df2, df3...]
。
使用字典:d={"A1": df1, "A2": df2, "A3": df3}
。
使用熊猫系列:s=pd.Series([df1, df2, df3], index=["A1", "A2", "A3"])
。
我将依次使用标签和数据框,因此我认为method1和method3应该是我的选择。但是,使用方法1将需要我传递两个项目,而使用方法3则只需要保留一个对象。 将数据框成系列放置是一种常见的做法吗?我很少看到人们这样做,这与最佳做法背道而驰吗?有更好的建议吗?
答案 0 :(得分:5)
OrderedDict
可能比为此使用系列更传统。
from collections import OrderedDict
d = OrderedDict([("A1", df1), ("A2", df2), ("A3", df3)])
可以很容易地对其进行迭代:
for label, df in d:
print(label, df)
那表示我看不出没有使用熊猫系列的任何强烈理由。使用该系列的一个小好处是,您可以使用点表示法s.A1
,s.A2
等以及类似字典的表示法s["A1"]
访问数据帧。使用一系列,对数据框进行排序,在中间插入其他数据框或在以后需要时将其他元数据与它们关联也将相对容易。
(关于Python 3.6和3.7中的字典顺序,请参见this question-如果使用Python 3.7,则可以使用普通字典而不是OrderedDict
,而无需使用其他'在Python 3.6中,插入顺序的保留是实现的细节,因此不应依赖。)
答案 1 :(得分:2)
方法2也有效。从Python 3.6开始,它也记住它的创建顺序。