【问题标题】:Pandas - applying multi index labels in a loopPandas - 在循环中应用多索引标签
【发布时间】:2017-06-25 00:47:27
【问题描述】:

我想连接任意数量的 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 时,我想将新的 DataFrame 与生成的 ID 连接起来。我该怎么做?

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

谢谢

【问题讨论】:

    标签: python pandas multi-index


    【解决方案1】:

    您应该仍然可以以相同的方式使用pd.concat。将所有 DataFrames 保存到一个列表中,并将这些 DataFrames 的所有标签保存在另一个列表中,然后使用“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)
    

    【讨论】:

      猜你喜欢
      • 2012-07-11
      • 2018-08-21
      • 2019-07-28
      • 1970-01-01
      • 2013-01-21
      • 2021-01-22
      • 1970-01-01
      • 1970-01-01
      • 2019-12-07
      相关资源
      最近更新 更多