为了账号安全,请及时绑定邮箱和手机立即绑定

pandas 将多索引 dafaframe 的索引重置为日期值并将其他索引转换为列

pandas 将多索引 dafaframe 的索引重置为日期值并将其他索引转换为列

月关宝盒 2023-04-11 16:11:56
我有一个多索引数据框,如下所示:                                                                   numberlocation                   category         created_on  Arab Republic of Egypt      ACCESS          2018-06-25 00:00:00        4                            ACCOUNT         2018-04-24 04:00:00        3                                            2018-05-31 04:00:00        3                                            2018-06-28 00:00:00        3                        ACTIVE DIRECTORY    2018-04-01 00:00:00        3... ... ... ...United States of America    WINDOWS 10      2018-09-25 04:00:00        8                                            2018-09-25 08:00:00       13                                            2018-09-26 08:00:00       12                                            2018-09-27 08:00:00        8                                            2018-09-27 12:00:00        9我想将其转换为以日期列为索引的数据框,但不丢失列号中的计数,新数据框应该是这样的:created_on              number       category       location2018-06-25 00:00:00          4       ACCESS         Arab Republic of Egypt2018-04-24 04:00:00          3       ACCOUNT        Arab Republic of Egypt2018-05-31 04:00:00          3       ACCOUNT        Arab Republic of Egypt2018-06-28 00:00:00          3       ACCOUNT        Arab Republic of Egypt2018-04-01 00:00:00          3  ACTIVE DIRECTORY    Arab Republic of Egypt     ... ... ... ...2018-09-25 04:00:00          8     WINDOWS 10       United States of America2018-09-25 08:00:00         13     WINDOWS 10       United States of America2018-09-26 08:00:00         12     WINDOWS 10       United States of America2018-09-27 08:00:00          8     WINDOWS 10       United States of America2018-09-27 12:00:00          9     WINDOWS 10       United States of America我怎样才能做到这一点?
查看完整描述

1 回答

?
繁星点点滴滴

TA贡献1803条经验 获得超3个赞

swaplevel在级别上使用0,2然后reset_index在级别1和上使用2:


df1 = df.swaplevel(0, 2).reset_index(level=[1, 2])

或者另一个想法先使用然后在列上reset_index使用:set_indexcreated_at


df1 = df.reset_index().set_index('created_on')

结果:


print(df1)

                             category                  location  number

created_on                                                             

2018-06-25 00:00:00            ACCESS    Arab Republic of Egypt       4

2018-04-24 04:00:00           ACCOUNT    Arab Republic of Egypt       3

2018-05-31 04:00:00           ACCOUNT    Arab Republic of Egypt       3

2018-06-28 00:00:00           ACCOUNT    Arab Republic of Egypt       3

2018-04-01 00:00:00  ACTIVE DIRECTORY    Arab Republic of Egypt       3

...

2018-09-25 04:00:00        WINDOWS 10  United States of America       8

2018-09-25 08:00:00        WINDOWS 10  United States of America      13

2018-09-26 08:00:00        WINDOWS 10  United States of America      12

2018-09-27 08:00:00        WINDOWS 10  United States of America       8

2018-09-27 12:00:00        WINDOWS 10  United States of America       9


查看完整回答
反对 回复 2023-04-11
  • 1 回答
  • 0 关注
  • 115 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信