Przeczytałem plik csv i obróciłem go, aby uzyskać następującą strukturę.Pandy sumują się w kolumnach i dzielą każdą komórkę od tej wartości.
pivoted = df.pivot('user_id', 'group', 'value')
lookup = df.drop_duplicates('user_id')[['user_id', 'group']]
lookup.set_index(['user_id'], inplace=True)
result = pivoted.join(lookup)
result = result.fillna(0)
Sekcja wyniku:
0 1 2 3 4 5 6 7 8 9 10 11 12 13 group
user_id
2 33653 2325 916 720 867 187 31 0 6 3 42 56 92 15 l-1
4 18895 414 1116 570 1190 55 92 0 122 23 78 6 4 2 l-2
16 1383 70 27 17 17 1 0 0 0 0 1 0 0 0 l-2
50 396 72 34 5 18 0 0 0 0 0 0 0 0 0 l-3
51 3915 1170 402 832 2791 316 12 5 118 51 32 9 62 27 l-4
Chcę podsumować całej kolumny 0 do kolumny 13 przez każdego wiersza i podzielić każdą komórkę przez sumę tym wierszu. Nadal przyzwyczajam się do pandy. Jeśli dobrze rozumiem, powinniśmy starać się unikać pętli podczas robienia takich rzeczy? Więc jak mogę zrobić ten pandowy sposób?
I t Hink tak, idąc więcej sudo: '0/suma (0..13), 1/suma (0..13)' również 'kolumna 0' jest nazwą kolumny nie jest konieczne jej indeks. " –