J'ai un 'DataFrame` qui a parfois des valeurs manquantes et qui ressemble à ceci:
Monday Tuesday Wednesday
================================================
Mike 42 NaN 12
Jenna NaN NaN 15
Jon 21 4 1
J'aimerais ajouter une nouvelle column
à mon bloc de données dans lequel je calculerais la moyenne sur toutes les columns
pour chaque row
.
Cela signifie que, pour Mike
, il me faudrait (df['Monday'] + df['Wednesday'])/2
, mais pour Jenna
, j'utiliserais simplement df['Wednesday amt.']/1
Est-ce que quelqu'un connaît le meilleur moyen de prendre en compte cette variation résultant de valeurs manquantes et de calculer la moyenne?
Vous pouvez simplement:
df['avg'] = df.mean(axis=1)
Monday Tuesday Wednesday avg
Mike 42 NaN 12 27.000000
Jenna NaN NaN 15 15.000000
Jon 21 4 1 8.666667
car .mean()
ignore les valeurs manquantes par défaut: voir docs .
Pour sélectionner un sous-ensemble, vous pouvez:
df['avg'] = df[['Monday', 'Tuesday']].mean(axis=1)
Monday Tuesday Wednesday avg
Mike 42 NaN 12 42.0
Jenna NaN NaN 15 NaN
Jon 21 4 1 12.5
Alternative - utilisant iloc (peut également utiliser loc ici):
df['avg'] = df.iloc[:,0:2].mean(axis=1)