programing

빈 값을 nan 대신 빈 문자열로 읽으려면 pandas.read_csv를 가져옵니다.

subpage 2023. 6. 8. 19:50
반응형

빈 값을 nan 대신 빈 문자열로 읽으려면 pandas.read_csv를 가져옵니다.

저는 판다 라이브러리를 사용하여 CSV 데이터를 읽고 있습니다.데이터에서 특정 열에 문자열이 포함되어 있습니다."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으로 읽습니다.지나가려고 했어요.str에서convertersread_csv 인수(사용)converters={'One': str})), 그러나 빈 셀은 여전히 NaN으로 읽습니다.

읽은 후에 필나로 값을 채울 수 있다는 것을 알지만, 특정 CSV 열의 빈 셀을 NaN 대신 빈 문자열로 읽어야 한다는 것을 팬더에게 말할 방법이 정말 없을까요?

저는 다른 답변과 댓글을 읽고도 여전히 혼란스러웠습니다.하지만 이제 답은 더 단순해 보입니다. 자, 여기 있습니다.

Pandas 버전 0.9(2012년부터) 이후로 설정만 하면 빈 문자열로 해석되는 빈 셀로 csv를 읽을 수 있습니다.keep_default_na=False:

pd.read_csv('test.csv', keep_default_na=False)

이 문제는 다음에서 더 명확하게 설명됩니다.

그것은 2012년 8월 19일에 팬더 버전 0.9에 대해 수정되었습니다.

여기에 어떤 종류의 옵션을 추가하기 위해 티켓을 추가했습니다.

https://github.com/pydata/pandas/issues/1450

그 사이에result.fillna('')당신이 원하는 것을 해야 합니다.

EDIT: 개발 버전(최종 버전 0.8.0)에서 다음 목록을 지정한 경우na_values빈 문자열은 결과에서 빈 문자열로 유지됩니다.

우리는 이것에 대해 판다에서 간단한 논쟁을 하고 있습니다.

사용:

df = pd.read_csv('test.csv', na_filter= False)

무엇을pandas기본적으로 결측값으로 정의하는 동안read_csv()여기서 찾을 수 있습니다.

import pandas
default_missing = pandas._libs.parsers.STR_NA_VALUES
print(default_missing)

산출물

{'', '<NA>', 'nan', '1.#QNAN', 'NA', 'null', 'n/a', '-nan', '1.#IND', '#N/A N/A', 'N/A', 'NULL', 'NaN', '-1.#IND', '-1.#QNAN', '#NA', '#N/A', '-NaN'}

그것으로 당신은 옵트 아웃을 할 수 있습니다.

import pandas
default_missing = pandas._libs.parsers.STR_NA_VALUES
default_missing = default_missing.remove('')
default_missing = default_missing.remove('na')

with open('test.csv', 'r') as csv_file:
    pandas.read_csv(csv_file, na_values=default_missing)

하나의 열에 대해 빈 문자열을 유지하려면 다음을 정의합니다.str칼럼 컨버터(dtypes작동하지 않음):

pd.read_csv('test.csv', converters={'column_name': str})

pd.read_csv( sourceObj, dtype='string')

추가 매개 변수가 필요하지 않습니다.

각 열 유형은 python 원시 문자열이며 빈 값은 빈 문자열 ' '이 됩니다.

버전: 팬더 v1.5

언급URL : https://stackoverflow.com/questions/10867028/get-pandas-read-csv-to-read-empty-values-as-empty-string-instead-of-nan

반응형