반응형
질문
나는 아래와 같은 Pandas Dataframe을 가지고 있습니다:
itm Date Amount
67 420 2012-09-30 00:00:00 65211
68 421 2012-09-09 00:00:00 29424
69 421 2012-09-16 00:00:00 29877
70 421 2012-09-23 00:00:00 30990
71 421 2012-09-30 00:00:00 61303
72 485 2012-09-09 00:00:00 71781
73 485 2012-09-16 00:00:00 NaN
74 485 2012-09-23 00:00:00 11072
75 485 2012-09-30 00:00:00 113702
76 489 2012-09-09 00:00:00 64731
77 489 2012-09-16 00:00:00 NaN
Amount 열에 함수를 적용하려고 할 때 다음과 같은 오류가 발생합니다:
ValueError: float NaN을 정수로 변환할 수 없습니다
Math 모듈의 .isnan을 사용하여 함수를 적용해 보았습니다. Pandas의 .replace 속성을 시도해 보았습니다. Pandas 0.9의 .sparse 데이터 속성을 시도해 보았습니다. 또한 NaN == NaN 문을 함수에서 사용해 보았습니다. 또한 이 문서 How do I replace NA values with zeros in an R dataframe?와 같은 다른 문서도 참고하였습니다. 시도한 모든 방법들은 작동하지 않거나 NaN을 인식하지 못합니다. 어떤 힌트나 해결책이라도 환영합니다.
답변
나는 DataFrame.fillna()
가 이 작업을 수행할 것이라고 믿습니다.
예시:
In [7]: df
Out[7]:
0 1
0 NaN NaN
1 -0.494375 0.570994
2 NaN NaN
3 1.876360 -0.229738
4 NaN NaN
In [8]: df.fillna(0)
Out[8]:
0 1
0 0.000000 0.000000
1 -0.494375 0.570994
2 0.000000 0.000000
3 1.876360 -0.229738
4 0.000000 0.000000
NaN을 한 열에만 채우려면 해당 열만 선택하세요. 이 경우에는 inplace=True를 사용하여 실제로 df의 내용을 변경합니다.
In [12]: df[1].fillna(0, inplace=True)
Out[12]:
0 0.000000
1 0.570994
2 0.000000
3 -0.229738
4 0.000000
Name: 1
In [13]: df
Out[13]:
0 1
0 NaN 0.000000
1 -0.494375 0.570994
2 NaN 0.000000
3 1.876360 -0.229738
4 NaN 0.000000
편집:
SettingWithCopyWarning
을 피하려면 내장된 열별 기능을 사용하세요.
df.fillna({1:0}, inplace=True)
반응형
댓글