我有一个多级数据框,我想将多级索引中的两个项目从其顶层行索引(级别0)下降到级别1索引,以便随后可以将整个顶层0摆动并将其设置为垂直索引。到目前为止,这是我尝试过的:
import pandas as pd
newyork2 = pd.read_csv("https://github.com/thedatasleuth/New-York-Congressional-Districts/blob/master/newyork2.csv?raw=True")
newyork2.columns.get_level_values(0) #As you can see, 'Party' and 'Year' are part of this level - these are the columns I want to drop to level 1.
newyork2.columns.get_level_values(0)[0].swaplevel(0,1) # This breaks
答案 0 :(得分:4)
很难从问题中弄清您想要什么。听起来好像您想在说以下内容时堆叠数据框:
这样我就可以将整个顶层0摆动并将其设置为垂直索引
import pandas
url = "https://github.com/thedatasleuth/New-York-Congressional-Districts/blob/master/newyork2.csv?raw=True"
newyork = (
pandas.read_csv(url, header=[0, 1], index_col=[0, 1, 2])
.reset_index(level=0, drop=True)
.stack(level='DISTRICT')
.rename_axis(['PARTY', 'YEAR','DISTRICT'], axis='index')
)
我得到:
STATUS Active Inactive Total
Party Year DISTRICT
DEM 2014 1 134293.0 9029.0 143322.0
10 241859.0 29860.0 271719.0
11 181049.0 10798.0 191847.0
12 245977.0 35086.0 281063.0
13 314229.0 37961.0 352190.0
14 199060.0 17156.0 216216.0
15 265862.0 29801.0 295663.0
16 239335.0 22452.0 261787.0
17 185510.0 13949.0 199459.0
18 145155.0 12118.0 157273.0