2017-03-15 110 views

回答

1

您可以選擇xs第一和骨料max

df = df.xs('A', level=1).groupby(level=0).max().reset_index() 
print (df) 
    DATE VALUE 
0 1-2002  3 
1 2-2002  8 

L = df.xs('A', level=1).groupby(level=0)['VALUE'].max().tolist() 
print (L) 
[3, 8] 

舊的解決方案:

我覺得你首先boolean indexingget_level_values過濾,然後groupby由第一和第二索引和彙總max

df = df[df.index.get_level_values('LETTER') == 'A'] 
df = df.groupby(level=[0,1]).max() 
print (df) 
       VALUE 
DATE LETTER  
1-2002 A   3 
2-2002 A   8 

df = df[df.index.get_level_values('LETTER') == 'A'] 
df = df.groupby(level=[0,1]).max().reset_index() 
print (df) 
    DATE LETTER VALUE 
0 1-2002  A  3 
1 2-2002  A  8 
+0

完美!工作得很好。 –

0

所以只得到最大值爲A

df = df.reset_index() 
df = df[(df['LETTER'] == 'A')].groupby(['DATE', 'LETTER']).max() 

並得到那個號碼的清單:

max_A = df[(df['LETTER'] == 'A')].groupby(['DATE', 'LETTER']).max()['VALUE'].tolist()