0
我想按兩列進行分組,找到第三列的最大(2),並將從nlargest找到的這兩個值拆分爲兩個新列。 我迄今代碼:查找列的最大(2)並將結果拆分爲單獨的列
dfworking.groupby(["STATE", "D"])['GENERAL PERCENT'].nlargest(2)
此找到我兩個最大的價值,他們只打印找到。 我將如何從這裏開始將這兩個最大值分成兩個單獨的列?
我想按兩列進行分組,找到第三列的最大(2),並將從nlargest找到的這兩個值拆分爲兩個新列。 我迄今代碼:查找列的最大(2)並將結果拆分爲單獨的列
dfworking.groupby(["STATE", "D"])['GENERAL PERCENT'].nlargest(2)
此找到我兩個最大的價值,他們只打印找到。 我將如何從這裏開始將這兩個最大值分成兩個單獨的列?
您可以使用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