Je veux utiliser unique
en groupby
agrégation, mais je ne veux pas nan
dans le résultat unique
.Python pandas valeur unique ignorer NaN
Un exemple dataframe:
df = pd.DataFrame({'a': [1, 2, 1, 1, pd.np.nan, 3, 3], 'b': [0,0,1,1,1,1,1],
'c': ['foo', pd.np.nan, 'bar', 'foo', 'baz', 'foo', 'bar']})
a b c
0 1.0000 0 foo
1 2.0000 0 NaN
2 1.0000 1 bar
3 1.0000 1 foo
4 nan 1 baz
5 3.0000 1 foo
6 3.0000 1 bar
Et le groupby
:
df.groupby('b').agg({'a': ['min', 'max', 'unique'], 'c': ['first', 'last', 'unique']})
Il en résulte est:
a c
min max unique first last unique
b
0 1.0000 2.0000 [1.0, 2.0] foo foo [foo, nan]
1 1.0000 3.0000 [1.0, nan, 3.0] bar bar [bar, foo, baz]
Mais je veux sans nan
:
a c
min max unique first last unique
b
0 1.0000 2.0000 [1.0, 2.0] foo foo [foo]
1 1.0000 3.0000 [1.0, 3.0] bar bar [bar, foo, baz]
Comment puis-je faire cela? Bien sûr, j'ai plusieurs colonnes à agréger et chaque colonne a besoin de différentes fonctions d'agrégation, donc je ne veux pas faire les agrégations unique
une par une et séparément des autres agrégations.
Merci!
Merci à vous tous, je pense que [Bharath shetty] (https://stackoverflow.com/users/4800652/bharath-shetty) a la solution la plus simple et pythonique. Merci encore!! – ragesz
C'est une solution terrible. C'est tout simplement faux. Il arrive seulement de travailler pour cet exemple parce que les valeurs au-dessus des NaN se trouvent dans ce groupe. –
@ T.C.Proctor oui la solution mise à jour va-t-elle passer d'une solution terrible à une solution Ohk? – Dark