Używam agregatów pand i groupby
do agregacji. Robię, co następuje:Pokaż grupę przy każdym rekordzie w grupie przez
data = {'ac' : ['a','a','a','a','a','a','a','a','b','b','b','b','b'],
'cls' ['wwww','wwww','wwww','xxxx','xxxx','zzzz','zzzz','yyyy','wwww','xxxx','zzzz','zzzz','yyyy'],
'pl' : [1,1,1,1,1,1,1,1,1,1,1,1,1]}
df = pd.DataFrame(data)
grouped = df.groupby(['ac','cls']).agg({'pl':np.sum})
pl
ac cls
a wwww 3
xxxx 2
yyyy 1
zzzz 2
b wwww 1
xxxx 1
yyyy 1
zzzz 2
Czy istnieje sposób, aby zrobić groupby
gdzie będzie wypełnienie kolumny ac
tak, że brzmi jak następuje?
pl
ac cls
a wwww 3
a xxxx 2
a yyyy 1
a zzzz 2
b wwww 1
b xxxx 1
b yyyy 1
b zzzz 2
Dzięki, nie zdawałem sobie sprawy (choć powinienem), że GroupBy stworzył nowe indeksy, i że prosty reset_index to naprawi. Zaznaczam to jako odpowiedź, która rozwiązała mój problem, nawet jeśli tak jest, ponieważ prowadzi operację ściśle do danej ramki danych, a nie jako ustawienie globalne. –
Możesz zasadniczo uzyskać ten sam wynik, ale bez dodatkowej kolumny używając opcji 'level':' grouped.reset_index (level = 0) ' – JohnE