일부 CSV 데이터를 읽기 위해 pandas 라이브러리를 사용하고 있습니다. 내 데이터에서 특정 열에는 문자열이 포함되어 있습니다. 문자열 "nan"
은 빈 문자열과 마찬가지로 가능한 값입니다. 팬더가 “nan”을 문자열로 읽도록 만들었지 만 빈 값을 NaN으로 읽지 않도록하는 방법을 알아낼 수 없습니다. 다음은 샘플 데이터 및 출력입니다.
One,Two,Three
a,1,one
b,2,two
,3,three
d,4,nan
e,5,five
nan,6,
g,7,seven
>>> pandas.read_csv('test.csv', na_values={'One': [], "Three": []})
One Two Three
0 a 1 one
1 b 2 two
2 NaN 3 three
3 d 4 nan
4 e 5 five
5 nan 6 NaN
6 g 7 seven
“nan”을 문자열 “nan ‘으로 올바르게 읽지 만 여전히 빈 셀을 NaN으로 읽습니다. 인수를 read_csv (with ) str
에 전달하려고 시도 했지만 여전히 빈 셀을 NaN으로 읽습니다.converters
converters={'One': str})
필 나로 읽은 후 값을 채울 수 있다는 것을 알고 있지만 팬더에게 특정 CSV 열의 빈 셀을 NaN 대신 빈 문자열로 읽어야한다고 말할 수있는 방법이 정말 없습니까?
답변
여기에 일종의 옵션을 추가하기 위해 티켓을 추가했습니다.
https://github.com/pydata/pandas/issues/1450
그동안 result.fillna('')
원하는 것을해야합니다.
편집 : 개발 버전 (최종 0.8.0)에서 빈 목록을 지정하면 na_values
빈 문자열이 결과에 빈 문자열로 유지됩니다.
답변
다른 답변과 댓글을 읽은 후에도 여전히 혼란 스러웠습니다. 그러나 이제 대답은 더 간단 해 보이므로 여기에 있습니다.
Pandas 버전 0.9 (2012 년부터)부터 간단히 설정하면 빈 셀이 빈 문자열로 해석되는 csv를 읽을 수 있습니다 keep_default_na=False
.
pd.read_csv('test.csv', keep_default_na=False)
이 문제는
2012 년 8 월 19 일에 Pandas 버전 0.9에서 수정되었습니다.
답변
이를 위해 Pandas read_csv에 간단한 인수가 있습니다.
사용하다:
df = pd.read_csv('test.csv', na_filter= False)
Pandas 문서는 위의 주장이 어떻게 작동하는지 명확하게 설명합니다.