【问题标题】:Concatenate two DataFrames into one MultiIndex sharing the same DateTimeIndex将两个 DataFrame 连接成一个 MultiIndex,共享相同的 DateTimeIndex
【发布时间】:2018-01-21 14:29:44
【问题描述】:

我可以将两个 DataFrames df1 和 df2 连接成一个 df,但不知何故我无法获得我需要的“堆栈”结构 - 请参阅附图。

如何让 df1 和 df2 结合起来共享一个 DateTimeIndex,就像“堆栈”结构中的那个一样?

【问题讨论】:

  • 期望的输出是什么?如果在 Multiindex 的第一级缺少日期时间,它只是显示的东西,真的是重复的。添加.reset_index()可以查看
  • 你需要.unstack() 吗?
  • .stack() 或 .unstack() 产生一个系列;我需要一个带有 MultiIndex 的 DataFrame。

标签: python pandas dataframe multi-index


【解决方案1】:

我觉得你需要to_frame:

df = pd.DataFrame({'AAPL':[1,3,4],
                   'GOOG_L':[6,7,8]}, index=pd.date_range('2012-01-01', periods=3))
print (df)
            AAPL  GOOG_L
2012-01-01     1       6
2012-01-02     3       7
2012-01-03     4       8

df1 = df.stack().to_frame('col')
print (df1)
                   col
2012-01-01 AAPL      1
           GOOG_L    6
2012-01-02 AAPL      3
           GOOG_L    7
2012-01-03 AAPL      4
           GOOG_L    8

df2 = df.unstack().to_frame('col')
print (df2)
                   col
AAPL   2012-01-01    1
       2012-01-02    3
       2012-01-03    4
GOOG_L 2012-01-01    6
       2012-01-02    7
       2012-01-03    8

【讨论】:

  • 绝对是有史以来最快的解决方案!非常感谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-10-15
  • 2011-09-26
  • 1970-01-01
  • 2022-10-18
  • 2021-03-16
  • 1970-01-01
  • 2019-04-05
相关资源
最近更新 更多