공백 (임의의 양)을 포함하는 Pandas 데이터 프레임에서 모든 값을 찾고 해당 값을 NaN으로 바꾸고 싶습니다.
이것이 어떻게 개선 될 수있는 아이디어가 있습니까?
기본적으로 나는 이것을 돌리고 싶다 :
A B C
2000-01-01 -0.532681 foo 0
2000-01-02 1.490752 bar 1
2000-01-03 -1.387326 foo 2
2000-01-04 0.814772 baz
2000-01-05 -0.222552 4
2000-01-06 -1.176781 qux
이것으로 :
A B C
2000-01-01 -0.532681 foo 0
2000-01-02 1.490752 bar 1
2000-01-03 -1.387326 foo 2
2000-01-04 0.814772 baz NaN
2000-01-05 -0.222552 NaN 4
2000-01-06 -1.176781 qux NaN
아래 코드를 사용하여 관리했지만 사람이 못 생겼습니다. 그것은 Pythonic이 아니며 팬더를 가장 효율적으로 사용하지 않는다고 확신합니다. 각 열을 반복하고 공백에 일치하는 각 값의 정규식 검색을 수행하는 함수를 적용하여 생성 된 열 마스크에 대해 부울 대체를 수행합니다.
for i in df.columns:
df[i][df[i].apply(lambda i: True if re.search('^\s*$', str(i)) else False)]=None
빈 문자열을 포함 할 수있는 필드 만 반복하여 약간 최적화 할 수 있습니다.
if df[i].dtype == np.dtype('object')
하지만 그다지 개선되지는 않았습니다.
그리고 마지막으로,이 코드는 팬더 '기능처럼 작동 없음에 대상 문자열을 설정 fillna()
하지만, 만약 내가 할 수 실제로 삽입 완전성에 대한 좋은 것 NaN
대신 직접 None
.
replace
정규식과 함께 사용 하는 것입니다 ... (아마도 이것은 기능으로 요청해야합니다).