Pandas 在pivot_表中设置为索引的多级列

Pandas 在pivot_表中设置为索引的多级列,pandas,pivot-table,Pandas,Pivot Table,我有一个带有多列标题的数据帧(df): 我想计算每种类型的平均数量。最终格式应如下所示: City State Type1 Type2 New York NY avg of(355+189+115) avg of (234+178+422) ....... 有人能给我一个提示吗? 非常感谢。 Kath我认为您可以在具有聚合的列中使用第一级的多索引: 但也许之前是必要的: 我认为您可以在具有聚合的列中使用第一级的Multindex: 但

我有一个带有多列标题的数据帧(df):

我想计算每种类型的平均数量。最终格式应如下所示:

City      State  Type1                 Type2
New York  NY     avg of(355+189+115)   avg of (234+178+422)
.......
有人能给我一个提示吗? 非常感谢。 Kath

我认为您可以在具有聚合的列中使用第一级的
多索引

但也许之前是必要的:

我认为您可以在具有聚合的列中使用第一级的
Multindex

但也许之前是必要的:


什么是样本数据的
df.index
df.columns
?什么是样本数据的
df.index
df.columns
City      State  Type1                 Type2
New York  NY     avg of(355+189+115)   avg of (234+178+422)
.......
print (df.index)
MultiIndex(levels=[[0, 1, 2, 3, 4], 
                   ['Chicago', 'Los Angeles', 'New York', 'Philadelphia', 'Phoenix'], 
                   ['AZ', 'CA', 'IL', 'NY', 'PA']],
           labels=[[0, 1, 2, 3, 4], [2, 1, 0, 3, 4], [3, 1, 2, 4, 0]])

print (df.columns)
MultiIndex(levels=[['Type1', 'Type2'], 
                   ['Year1', 'Year2', 'Year3', 'Year4', 'Year5', 'Year6']],
           labels=[[0, 0, 0, 1, 1, 1], [0, 1, 2, 3, 4, 5]],
           names=['YearQ', 'index'])


df = df.groupby(axis=1, level=0).sum()
print (df)
YearQ              Type1  Type2
0 New York     NY    659    834
1 Los Angeles  CA    605    610
2 Chicago      IL   1871    911
3 Philadelphia PA    881   1119
4 Phoenix      AZ    616    892
print (df.index)
Int64Index([0, 1, 2, 3, 4], dtype='int64')

print (df.columns)
MultiIndex(levels=[['Type1', 'Type2', 'YearC', 'YearS'], 
                   ['City', 'State', 'Year1', 'Year2', 'Year3', 'Year4', 'Year5', 'Year6']],
           labels=[[2, 3, 0, 0, 0, 1, 1, 1], [0, 1, 2, 3, 4, 5, 6, 7]],
           names=['YearQ', 'index'])


df = df.set_index([('YearC','City'), ('YearS','State')])
df = df.groupby(axis=1, level=0).sum()
print (df)
YearQ                         Type1  Type2
(YearC, City) (YearS, State)              
New York      NY                659    834
Los Angeles   CA                605    610
Chicago       IL               1871    911
Philadelphia  PA                881   1119
Phoenix       AZ                616    892