[python] pandas.read_csv를 가져 와서 빈 값을 nan 대신 빈 문자열로 읽습니다.

일부 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으로 읽습니다.convertersconverters={'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 문서는 위의 주장이 어떻게 작동하는지 명확하게 설명합니다.

링크


답변