我有一个多索引数据帧,如下所示:
number
location 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
我想将其隐藏在以date列为索引的数据框中,但又不丢失列号中的计数,新的dataframe应该是这样的:
created_on number category location
2018-06-25 00:00:00 4 ACCESS Arab Republic of Egypt
2018-04-24 04:00:00 3 ACCOUNT Arab Republic of Egypt
2018-05-31 04:00:00 3 ACCOUNT Arab Republic of Egypt
2018-06-28 00:00:00 3 ACCOUNT Arab Republic of Egypt
2018-04-01 00:00:00 3 ACTIVE DIRECTORY Arab Republic of Egypt
... ... ... ...
2018-09-25 04:00:00 8 WINDOWS 10 United States of America
2018-09-25 08:00:00 13 WINDOWS 10 United States of America
2018-09-26 08:00:00 12 WINDOWS 10 United States of America
2018-09-27 08:00:00 8 WINDOWS 10 United States of America
2018-09-27 12:00:00 9 WINDOWS 10 United States of America
我该怎么做?
答案 0 :(得分:1)
在级别swaplevel
和0
上使用2
,然后在级别reset_index
和1
上使用2
:
df1 = df.swaplevel(0, 2).reset_index(level=[1, 2])
另一个想法是先使用reset_index
,然后在列set_index
上使用created_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