Próbuję grupować kolumna i oblicza wartość liczy na inną kolumnę.pandas reset_index po groupby.value_counts()
import pandas as pd
dftest = pd.DataFrame({'A':[1,1,1,1,1,1,1,1,1,2,2,2,2,2],
'Amt':[20,20,20,30,30,30,30,40, 40,10, 10, 40,40,40]})
print(dftest)
dftest wygląda
A Amt
0 1 20
1 1 20
2 1 20
3 1 30
4 1 30
5 1 30
6 1 30
7 1 40
8 1 40
9 2 10
10 2 10
11 2 40
12 2 40
13 2 40
wykonywać grupowanie
grouper = dftest.groupby('A')
df_grouped = grouper['Amt'].value_counts()
co daje
A Amt
1 30 4
20 3
40 2
2 40 3
10 2
Name: Amt, dtype: int64
czego chcę jest, aby zachować najwyższe dwa rzędy z każdej grupy
Również byłem zakłopotany błędem gdy próbowałem reset_index
df_grouped.reset_index()
co daje następujący błąd
df_grouped.reset_index() ValueError: cannot insert Amt, already exists
idealny !! rozwiązuje problem z resetowaniem indeksu ... czy istnieje lepszy sposób na utrzymanie górnych n wierszy według grupy, liczenie ... teraz po wypróbowaniu kilku rzeczy, jedyny możliwy sposób, jaki mogę wymyślić to pierwszy groupby.value_counts, następnie podzbiór – muon
Może potrzebujesz ['nlargest'] (http://pandas.pydata.org/pandas-docs/stable/generated/pandas.Series.nlargest.html) -' dftest.groupby (['A', 'Amt']) .size(). nlargest (3) ' – jezrael
, który nie robi tego grupowo, daje tylko ogólną nlargest – muon