加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

python – 来自列的pandas multi索引

发布时间:2020-12-20 12:15:06 所属栏目:Python 来源:网络整理
导读:我有这样的数据帧: 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)
我有这样的数据帧:

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

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

解决方法

您可以尝试获取列的分类代码,然后堆叠并将索引收敛到元组

df.columns = df.columns.to_series().astype('category').cat.codes
df1 = 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)    c3
dtype: object

**编辑**

根据索引级别对数据进行排序

df.index  = pd.to_datetime(df.index)
df.columns = df.columns.to_series().astype('category').cat.codes
df1 = 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)    c3
dtype: object

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读