来自列的熊猫多索引

我有一个这样的数据框:


          index        A   B   C                  

     01.01.2000        a1  b1  c1

     01.02.2000        a2  b2  c2

     01.03.2000        a3  b3  c3

并想得到这个:


              index      X

     (0, 01.01.2000)     a1

     (0, 01.02.2000)     a2

     (0, 01.03.2000)     a3

     (1, 01.01.2000)     b1

     (1, 01.02.2000)     b2

     (1, 01.03.2000)     b3

     (2, 01.01.2000)     c1

     (2, 01.02.2000)     c2

     (2, 01.03.2000)     c3

我需要以这种方式通过一些回归模型运行数据。不幸的是,关于多索引的熊猫文档对我来说非常混乱,因为我是新手。谢谢!


偶然的你
浏览 147回答 3
3回答

30秒到达战场

您可以尝试获取列的分类代码,然后将索引堆叠和收敛到元组df.columns = df.columns.to_series().astype('category').cat.codesdf1 = df.stack().reorder_levels([1,0]).sort_index()df1.index = tuple(df1.index)出去:(0, 01.01.2000)    a1(0, 01.02.2000)    a2(0, 01.03.2000)    a3(1, 01.01.2000)    b1(1, 01.02.2000)    b2(1, 01.03.2000)    b3(2, 01.01.2000)    c1(2, 01.02.2000)    c2(2, 01.03.2000)    c3dtype: object** 编辑 **根据索引级别对数据进行排序df.index  = pd.to_datetime(df.index)df.columns = df.columns.to_series().astype('category').cat.codesdf1 = df.stack().reorder_levels([1,0]).sort_index(level=1)df1.index = tuple(df1.index)出去:(0, 2000-01-01 00:00:00)    a1(1, 2000-01-01 00:00:00)    b1(2, 2000-01-01 00:00:00)    c1(0, 2000-01-02 00:00:00)    a2(1, 2000-01-02 00:00:00)    b2(2, 2000-01-02 00:00:00)    c2(0, 2000-01-03 00:00:00)    a3(1, 2000-01-03 00:00:00)    b3(2, 2000-01-03 00:00:00)    c3dtype: object

精慕HU

你需要reset_index两次然后就做melts=df.reset_index().reset_index().melt(['level_0','index'])yourdf=pd.DataFrame({'index':tuple(zip(s['level_0'],s['index'])),'X':s.value})yourdfOut[130]:              index   X0  (0, 01.01.2000)  a11  (1, 01.02.2000)  a22  (2, 01.03.2000)  a33  (0, 01.01.2000)  b14  (1, 01.02.2000)  b25  (2, 01.03.2000)  b36  (0, 01.01.2000)  c17  (1, 01.02.2000)  c28  (2, 01.03.2000)  c3

慕盖茨4494581

理解pd.DataFrame([    [(i, idx), v]    for i, (idx, *V) in enumerate(df.itertuples())    for v in V], columns=['index', 'X'])             index   X0  (0, 01.01.2000)  a11  (0, 01.01.2000)  b12  (0, 01.01.2000)  c13  (1, 01.02.2000)  a24  (1, 01.02.2000)  b25  (1, 01.02.2000)  c26  (2, 01.03.2000)  a37  (2, 01.03.2000)  b38  (2, 01.03.2000)  c3
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python