Pandas DataFrame을 CSV 파일에 쓰기
CSV 파일에 쓰고 싶은 팬더에 데이터 프레임이 있습니다. 나는 이것을 사용하여하고있다 :
df.to_csv('out.csv')
그리고 오류가 발생합니다.
UnicodeEncodeError: 'ascii' codec can't encode character u'\u03b1' in position 20: ordinal not in range(128)
이 문제를 쉽게 해결할 수있는 방법이 있습니까 (예 : 데이터 프레임에 유니 코드 문자가 있음)? 그리고 예를 들어 '탭으로'방법을 사용하여 CSV 대신 탭으로 구분 된 파일에 쓰는 방법이 있습니까 (내가 존재한다고 생각하지 않음)?
탭으로 구분하려면 다음 sep
인수를 사용할 수 있습니다 to_csv
.
df.to_csv(file_name, sep='\t')
특정 인코딩 (예 : 'utf-8')을 사용하려면 다음 encoding
인수를 사용하십시오 .
df.to_csv(file_name, sep='\t', encoding='utf-8')
당신이 저장 될 때 DataFrame
에 객체를 csv 파일 사용 to_csv
방법을, 당신은 아마 실 거예요 저장할 필요가있을 선행 지수 각 행 의 DataFrame
객체를.
부울 값을 매개 변수 에 전달하여이를 방지 할 수 있습니다 .False
index
다소 비슷합니다.
df.to_csv(file_name, encoding='utf-8', index=False)
따라서 DataFrame 개체가 다음과 같은 경우 :
Color Number
0 red 22
1 blue 10
csv 파일은 다음을 저장합니다.
Color,Number
red,22
blue,10
대신 ( 기본값 True
이 전달 된 경우)
,Color,Number
0,red,22
1,blue,10
색인을 원하지 않는 경우.
df.to_csv("out.csv", index=False)
'utf-8'로 인코딩하는 데 문제가 있고 셀 단위로 이동하려면 다음을 시도해 볼 수 있습니다.
파이썬 2
(여기서 "df"는 DataFrame 개체입니다.)
for column in df.columns:
for idx in df[column].index:
x = df.get_value(idx,column)
try:
x = unicode(x.encode('utf-8','ignore'),errors ='ignore') if type(x) == unicode else unicode(str(x),errors='ignore')
df.set_value(idx,column,x)
except Exception:
print 'encoding error: {0} {1}'.format(idx,column)
df.set_value(idx,column,'')
continue
그런 다음 시도하십시오.
df.to_csv(file_name)
다음을 통해 열의 인코딩을 확인할 수 있습니다.
for column in df.columns:
print '{0} {1}'.format(str(type(df[column][0])),str(column))
경고 : errors = 'ignore'는 문자를 생략합니다.
IN: unicode('Regenexx\xae',errors='ignore')
OUT: u'Regenexx'
파이썬 3
for column in df.columns:
for idx in df[column].index:
x = df.get_value(idx,column)
try:
x = x if type(x) == str else str(x).encode('utf-8','ignore').decode('utf-8','ignore')
df.set_value(idx,column,x)
except Exception:
print('encoding error: {0} {1}'.format(idx,column))
df.set_value(idx,column,'')
continue
UTF-8 인코딩도 지정하면 때때로 이러한 문제가 발생합니다. 파일을 읽는 동안 인코딩을 지정하고 파일에 쓰는 동안 동일한 인코딩을 지정하는 것이 좋습니다. 이것은 문제를 해결할 수 있습니다.
it could be not the answer for this case, but as I had the same error-message with .to_csv I tried .toCSV('name.csv') and the error-message was different ("'SparseDataFrame' object has no attribute 'toCSV'"). So the problem was solved by turning dataframe to dense dataframe
df.to_dense().to_csv("submission.csv", index = False, sep=',', encoding='utf-8')
To write a pandas DataFrame to a CSV file, you will need DataFrame.to_csv
. This function offers many arguments with reasonable defaults that you will more often than not need to override to suit your specific use case. For example, you might want to use a different separator, change the datetime format, or drop the index when writing. to_csv
has arguments you can pass to address these requirements.
Here's a table listing some common scenarios of writing to CSV files and the corresponding arguments you can use for them.
Footnotes
- The default separator is assumed to be a comma (
','
). Don't change this unless you know you need to.- By default, the index of
df
is written as the first column. If your DataFrame does not have an index (IOW, thedf.index
is the defaultRangeIndex
), then you will want to setindex=False
when writing. To explain this in a different way, if your data DOES have an index, you can (and should) useindex=True
or just leave it out completely (as the default isTrue
).- It would be wise to set this parameter if you are writing string data so that other applications know how to read your data. This will also avoid any potential
UnicodeEncodeError
s you might encounter while saving.- Compression is recommended if you are writing large DataFrames (>100K rows) to disk as it will result in much smaller output files. OTOH, it will mean the write time will increase (and consequently, the read time since the file will need to be decompressed).
Example of export in file with full path on Windows and in case your file has headers:
df.to_csv (r'C:\Users\John\Desktop\export_dataframe.csv', index = None, header=True)
Example if you have want to store in folder export which is in same directory where your script is with utf-8 encodint and tab as separator:
df.to_csv(r'./export/dftocsv.csv', sep='\t', encoding='utf-8', header='true')
참고URL : https://stackoverflow.com/questions/16923281/writing-a-pandas-dataframe-to-csv-file
'programing' 카테고리의 다른 글
C #의 문자열에서 {0}은 (는) 무엇을 의미합니까? (0) | 2020.10.04 |
---|---|
항목이 std :: vector에 있는지 확인하는 방법은 무엇입니까? (0) | 2020.10.03 |
document.getElementById 대 jQuery $ () (0) | 2020.10.03 |
SQL 다중 열 순서 (0) | 2020.10.03 |
null도 허용하는 고유 제약 조건을 어떻게 생성합니까? (0) | 2020.10.03 |