熊猫 - 在循环中应用多索引标签

时间:2017-02-07 16:51:44

标签: python pandas multi-index

我想连接任意数量的DataFrame,但是当它们全部在一起时,在每个DataFrame上保留一个标识符。我的问题类似于Concatenate Pandas columns under new multi-index level

问题如下。我有这样的多个DataFrame;

data           Open     High      Low    Close   Volume
Date                                                   
2002-01-17  0.18077  0.18800  0.16993  0.18439  1720833
2002-01-18  0.18439  0.21331  0.18077  0.19523  2027866
2002-01-21  0.19523  0.20970  0.19162  0.20608   771149

我想将它们连接到此;

symbol         ABC                                       XYZ
data           Open     High      Low    Close   Volume  Open ...
Date                                                   
2002-01-17  0.18077  0.18800  0.16993  0.18439  1720833  ...
2002-01-18  0.18439  0.21331  0.18077  0.19523  2027866  ...
2002-01-21  0.19523  0.20970  0.19162  0.20608   771149  ...

但是我通过循环执行此操作,我将为该特定DataFrame生成ABCXYZ标签。连接DataFrame时,我想用生成的ID连接新的DataFrame。我怎么能这样做?

链接问题中的解决方案同时应用了所有键,但由于我在循环中连接(由于任意数量的DataFrame),因此在这种情况下解决方案不适用。

由于

1 个答案:

答案 0 :(得分:1)

您仍然可以以相同的方式使用pd.concat。将所有DataFrame保存到列表中,并将这些DataFrame的所有标签保存在另一个列表中,然后使用'pd.concat'。这是您的代码可以镜像的一些伪代码。

dfs = []
df_labels = []

# for loop that generates dataframes
for i in someiterable:
    dfs.append(df_new)
    df_labels.append(label_new)

pd.concat(dfs, keys=df_labels, axis=1)