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 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |