이 질문에 대한 답변이 an answer에 있습니다.왜 max()가 때때로 nan을 반환하고 가끔 무시합니까?
,의 내가이
import numpy as np
import pandas as pd
df = pd.DataFrame({'a': [1, 2, np.nan], 'b': [3, np.nan, 10], 'c':[np.nan, 5, 34]})
a b c
0 1.0 3.0 NaN
1 2.0 NaN 5.0
2 NaN 10.0 34.0
같은 dataframe이 내가 행의 최대로 NaN
를 교체하고 싶은 말은 나에게 원하는 출력을 제공 I can do
df.apply(lambda row: row.fillna(row.max()), axis=1)
하자
그러나을 사용하면df.apply(lambda row: row.fillna(max(row)), axis=1)
어떤 이유로이 두 세 가지의 경우에 올바르게 교체 :
a b c
0 1.0 3.0 3.0
1 2.0 5.0 5.0
2 NaN 10.0 34.0
사실, 내가 손으로 확인하는 경우
max(df.iloc[0, :])
max(df.iloc[1, :])
max(df.iloc[2, :])
그런 다음
3.0
5.0
nan
를 인쇄
할 때
df.iloc[0, :].max()
df.iloc[1, :].max()
df.iloc[2, :].max()
(10)은이
을 예상 인쇄합니다3.0
5.0
34.0
max()
이 삼가지 경우 1 실패를 제외한 모든 3에 왜 때로는 때로는 무시 NaN
등을하지 아니 왜 내 질문은?
유일하게 염두에 두어야 할 점은 3 행의 '나노'가 첫 번째 항목이고 다른 행의 항목이 나중에 나오는 것입니다. 그래서 아마'max'가이 값들을 처리하는 순서에 달려 있습니다 ... –
입니다. 방금 확인한 바,이 동작을 위해 팬더가 필요 없어도'max ([1,2, np.nan]) '및'max ([np.nan, 2,3])'를 입력하면됩니다. –