Если я возьму максимум двух столбцов с плавающей точкой, даже если некоторые из них являются NaN, результат будет вполне предсказуемым:
>>> df = pd.DataFrame({"a": [1.0, 2.0, 3.0, 4.0],
"b": [3, 2, float("nan"), 9]})
>>> df
a b
0 1.0 3.0
1 2.0 2.0
2 3.0 NaN
3 4.0 9.0
>>> df.dtypes
a float64
b float64
dtype: object
>>> df[["a", "b"]].max(axis=1)
0 3.0
1 2.0
2 3.0
3 9.0
dtype: float64
, хотя я не уверен, почему максимум 3.0 и NaN не 'т NaN.
Если, однако, столбцы содержат не плавающие типы (строки в этом примере), NaN, кажется, полностью загрязняет результат:
>>> df = pd.DataFrame({"a": ["1", "2", "3", "4"],
"b": ["3", "2", float("nan"), "9"]})
>>> df
a b
0 1 3
1 2 2
2 3 NaN
3 4 9
>>> df.dtypes
a object
b object
dtype: object
>>> df[["a", "b"]].max(axis=1)
0 NaN
1 NaN
2 NaN
3 NaN
dtype: float64
Я ожидал, что вывод max ()колл будет 3, 2, NaN, 9.