sourcecode

결측값이 있는 열의 부분 집합에 대한 행 단위 평균

codebag 2023. 10. 10. 20:18
반응형

결측값이 있는 열의 부분 집합에 대한 행 단위 평균

때때로 누락된 값이 있는 'DataFrame'이 있습니다. 다음과 같이 보입니다.

          Monday         Tuesday         Wednesday 
      ================================================
Mike        42             NaN               12
Jenna       NaN            NaN               15
Jon         21              4                 1

새로운 것을 추가하고 싶습니다.column제 데이터 프레임에 저장된 데이터를 저장할 수 있습니다.columns모든 일에 대하여row.

그 의미는.Mike, 필요합니다.(df['Monday'] + df['Wednesday'])/2, 대신에Jenna, 저는 단순히.df['Wednesday amt.']/1

결측치로 인한 이 변동을 설명하고 평균을 계산하는 가장 좋은 방법을 아는 사람이 있습니까?

간단히 다음을 수행할 수 있습니다.

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

왜냐면.mean()는 기본적으로 결측값을 무시합니다. 문서를 참조하십시오.

부분 집합을 선택하려면 다음을 수행할 수 있습니다.

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

대안 - iloc 사용(여기서도 loc 사용 가능):

df['avg'] = df.iloc[:,0:2].mean(axis=1)

이전의 모든 답변이 현재 경고를 인쇄하고 있으므로 이 질문을 다시 활성화합니다.

대부분의 경우 사용assign():

df = df.assign(avg=df.mean(axis=1))

특정 열의 경우 이름으로 입력할 수 있습니다.

df = df.assign(avg=df.loc[:, ["Monday", "Tuesday", "Wednesday"]].mean(axis=1))

또는 인덱스별로, 포함되지 않으므로 마지막으로 원하는 인덱스보다 하나 이상을 사용합니다.

df = df.assign(avg=df.iloc[:,0:3]].mean(axis=1))

적용 방법 사용:

df['avg'] = df[['Monday', 'Tuesday']].apply(np.avg, axis = 1)

언급URL : https://stackoverflow.com/questions/34734940/row-wise-average-for-a-subset-of-columns-with-missing-values

반응형