programing

Python Pandas read_exceltype str은 읽을 때 또는 to_csv를 통해 쓸 때 nan을 공백(')으로 대체합니다.

lastcode 2023. 5. 7. 11:30
반응형

Python Pandas read_exceltype str은 읽을 때 또는 to_csv를 통해 쓸 때 nan을 공백(')으로 대체합니다.

Python 버전:Python 2.7.13 :: 아나콘다 사용자 정의(64비트) 판다 버전: 판다 0.20.2

안녕하세요.

저는 꽤 간단한 요구사항이 있습니다.엑셀 파일을 읽고 csv 파일에 특정 시트를 쓰고 싶습니다.csv 파일 작성 시 원본 Excel 파일의 공백 값은 공백으로 처리/작성되어야 합니다.하지만 제 빈 레코드는 출력 파일에 항상 'nan'으로 기록됩니다.(따옴표 없이)

엑셀 파일을 메소드로 읽었습니다.

read_messages(xlsx, sheetname='sheet1', dtype = str)

숫자이지만 문자열로 처리해야 하는 일부 열이 있기 때문에 dtype을 지정합니다. (그렇지 않으면 선행 0이 손실될 수 있습니다. 등)저는 모든 셀에서 정확한 값을 읽고 싶습니다.

이제 to_csv(output_file,index=False,mode='wb',sep=',encoding='utf-8')을 통해 출력 .csv 파일을 씁니다.

하지만 제 결과 csv 파일에는 엑셀 파일의 모든 빈 셀에 대한 nan이 포함되어 있습니다.

제가 무엇을 빠뜨리고 있나요?이미 .fillna(', inplace=True) 기능을 시도했지만 데이터에 아무런 영향을 주지 않는 것 같습니다.또한 to_csv 메서드에 매개 변수 na_rep ='를 추가하려고 했지만 성공하지 못했습니다.

도와주셔서 감사합니다!

부록:재현 가능한 예제 다음에 여기를 찾으십시오.

재현 가능한 예제 코드 뒤에 다음을 참조하십시오.먼저 COLUMNA COLUMNB COLUMNC 01 test 02 test 내용의 2열로 새 Excel 파일을 생성하십시오.
03 테스트

(이 엑셀 파일을 c:\test에 저장했습니다.xls 열 B의 경우 첫 번째 및 세 번째 행과 열 C의 경우 두 번째 행이 비어 있거나 비어 있습니다.)

여기 내 코드가 있습니다.

import pandas as pd
xlsx = pd.ExcelFile('c:\\test.xlsx')
df = pd.read_excel(xlsx, sheetname='Sheet1', dtype = str)
df.fillna('', inplace=True)
df.to_csv('c:\\test.csv', index=False,mode='wb',sep=',',encoding='utf-8', na_rep ='')

결과:
열/열/열/열/열/열/열/열/열/열/열/열/열/열/열/열/열 번호
01,난,테스트
02,시험,난
03,난,테스트

제가 원하는 결과는 다음과 같습니다.
열/열/열/열/열/열/열/열/열/열/열/열/열/열/열/열/열 번호
01,,테스트
02,테스트,
03, 테스트

당신이 상대하고 있기 때문에nan문자열, 다음 기능을 사용할 수 있습니다.

df = pd.DataFrame({'Col1' : ['nan', 'foo', 'bar', 'baz', 'nan', 'test']})
df.replace('nan', '')

   Col1
0      
1   foo
2   bar
3   baz
4      
5  test

모든.'nan'문자열 값이 빈 문자열로 바뀝니다.''.replace이(가) 제자리에 있지 않으므로, 다시 할당해야 합니다.

df = df.replace('nan', '')

그런 다음 다음 다음을 사용하여 파일에 쓸 수 있습니다.to_csv.


실제로 NaN 값을 공백으로 채우려는 경우fillna:

df = df.fillna('')    

동일한 문제가 발생하여 read_message.df = pd.read_message(내용, sheet_name=heet, header=[0], keep_default_na=False) 옵션을 사용했습니다.

저도 문제가 , 나도같문있었고제옵은션가,은▁for은▁options의 옵션이 .replace또는fillna작동하지 않았습니다. (df.info 에서 NaN이 표시된 필드는 float64임을 확인할 수 있었습니다.)na_filter = False option저를 위해 일했습니다.다음과 같이 작동합니다.

df = pd.read_excel("myexcelfile.xlsx", na_filter = False)

자세한 내용은 다음을 참조하십시오.na_filter 팬의더선택권권▁in▁option택선▁the.read_excel 문서화

언급URL : https://stackoverflow.com/questions/45148292/python-pandas-read-excel-dtype-str-replace-nan-by-blank-when-reading-or-whe

반응형