J'essaie de simuler votre problème:
df = pd.DataFrame({'A':['1','3','4'],
'B':['5','6','3'],
'E':['3','4', 3]})
print (df)
A B E
0 1 5 3
1 3 6 4
2 4 3 3
a = df.max(axis=1)
print (a)
0 NaN
1 NaN
2 NaN
dtype: float64
Cela signifie que vos données sont mélangées - numérique avec des chaînes.
solution est de convertir toutes les données numériques:
a = df.astype(int).max(axis=1)
print (a)
0 5
1 6
2 4
dtype: int32
Parfois, il est pas possible, parce que les données non numériques:
df = pd.DataFrame({'A':['rr','3','4'],
'B':['5','6','3'],
'E':['3','4', 3]})
print (df)
A B E
0 rr 5 3
1 3 6 4
2 4 3 3
a = df.astype(int).max(axis=1)
ValueError: invalid literal for int() with base 10: 'rr'
Ensuite est l'utilisation possible to_numeric
:
a = df.apply(lambda x: pd.to_numeric(x, errors='coerce'))
print (a)
A B E
0 NaN 5 3
1 3.0 6 4
2 4.0 3 3
a = df.apply(lambda x: pd.to_numeric(x, errors='coerce')).max(axis=1)
print (a)
0 5.0
1 6.0
2 4.0
dtype: float64
C'est une série mais j'ai pris un examen plus approfondi de la base de données d'origine et il existe de nombreuses lignes avec des valeurs 'n.d.' Je suppose que le plus gros problème serait de traiter ces lignes. Des suggestions sur comment ignorer ou ignorer ces lignes ou devrais-je poster une nouvelle question sur SO? –
Quel est le dtype de la série et sont "n.d." chaîne ? –