데이터 프레임의 모든 NaN 값을 1로 바꾸고 다른 모든 값을 0으로 바꾸고 싶습니다. 한 열의 NaN 값에 따라 df를 변경해야하는 프로젝트의 예일뿐입니다.
나는 isnull (), isnan (), x.Field_2 및 더 많은 변형을 시도했습니다. 또한 isnull의 문서는 저에게 실제로 도움이되지 않았습니다. 나는 많이 봤고 df의 모든 NaN 값을 얻을 수있는 작업 만 찾았습니다.
문제는 x [ 'Field_2']. isnull ()이 배열을 반환하지만 df를 변경하는 다른 것을 생각할 수 없다는 것입니다. 기본적으로 셀이 NaN이면 모든 행을 확인하고 모든 셀에 대해 실행하는 방법을 찾고 있습니다.
내 오류 메시지 :
KeyError: 'Field_2'
# importing pandas and numpy libraries
import pandas as pd
import numpy as np
# creating and initializing a nested list
values_list = [[15, 2.5, np.nan], [20, 4.5, 50], [25, 5.2, 80],
[45, 5.8, 48], [40, np.nan, 70], [41, 6.4, 90],
[51, 2.3, 111]]
# creating a pandas dataframe
df = pd.DataFrame(values_list, columns=['Field_1', 'Field_2', 'Field_3'],
index=['a', 'b', 'c', 'd', 'e', 'f', 'g'])
df = df.apply(lambda x: 1 if x['Field_2'].isnull() else 0)
--------- 해결책
당신의 도움을 통해 나는 내 문제를 해결할 수 있습니다. 감사합니다! - 마지막 해결책:
resultList = df.apply(lambda x: x['Field_1'] if pd.isna(x['Field_2']) else x['Field_2'], axis=1)
df['newColumn'] = resultList
df
나는 루프가 필요 사용하지 여기에 생각 DataFrame.isna
에 대한 정수로 변환과 True/False
에 1/0
매핑 :
df = df.isna().astype(int)
print (df)
Field_1 Field_2 Field_3
a 0 0 1
b 0 0 0
c 0 0 0
d 0 0 0
e 0 1 0
f 0 0 0
g 0 0 0
솔루션은 axis=1
행당 for 루프 로 변경해야하며 테스트 스칼라가 사용됩니다 pandas.isna
.
df = df.apply(lambda x: 1 if pd.isna(x['Field_2']) else 0, axis=1)
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다