2017-09-15 42 views
0

我想按兩列進行分組,找到第三列的最大(2),並將從nlargest找到的這兩個值拆分爲兩個新列。 我迄今代碼:查找列的最大(2)並將結果拆分爲單獨的列

dfworking.groupby(["STATE", "D"])['GENERAL PERCENT'].nlargest(2) 

此找到我兩個最大的價值,他們只打印找到。 我將如何從這裏開始將這兩個最大值分成兩個單獨的列?

回答

1

您可以使用groupby,agg.apply

df 

    col1 col2 col3 
0  A  1 1.1 
1  A  3 1.1 
2  A  3 1.1 
3  B  2 2.6 
4  B  4 2.5 
5  B  2 3.4 
6  B  5 2.6 
7  A  3 2.6 
8  B  6 3.4 
9  C  3 3.4 
10 B  5 2.6 
11 D  1 1.1 
12 D  1 1.1 
13 D  1 3.3 

df.groupby(['col1', 'col2'])['col3']\ 
     .agg(lambda x: x.nlargest(2)).apply(pd.Series) 

      0 1 
col1 col2   
A 1  1.1 NaN 
    3  2.6 1.1 
B 2  3.4 2.6 
    4  2.5 NaN 
    5  2.6 2.6 
    6  3.4 NaN 
C 3  3.4 NaN 
D 1  3.3 1.1 
相關問題