gpt4 book ai didi

python - Pandas df.to_csv ("file.csv"encode ="utf-8")仍然为减号提供垃圾字符

转载 作者:IT老高 更新时间:2023-10-28 20:30:15 25 4
gpt4 key购买 nike

我读过一些关于 Pandas 的 to_csv( ... etc ...) 的 Python 2 限制。我击中了吗?我在 Python 2.7.3

当 ≥ 和 - 出现在字符串中时,这会变成垃圾字符。除此之外,导出是完美的。

df.to_csv("file.csv", encoding="utf-8") 

有什么解决办法吗?

df.head() 是这样的:

demography  Adults ≥49 yrs  Adults 18−49 yrs at high risk||  \
state
Alabama 32.7 38.6
Alaska 31.2 33.2
Arizona 22.9 38.8
Arkansas 31.2 34.0
California 29.8 38.8

csv 输出是这样的

state,  Adults ≥49 yrs,   Adults 18−49 yrs at high risk||
0, Alabama, 32.7, 38.6
1, Alaska, 31.2, 33.2
2, Arizona, 22.9, 38.8
3, Arkansas,31.2, 34
4, California,29.8, 38.8

整个代码是这样的:

import pandas
import xlrd
import csv
import json

df = pandas.DataFrame()
dy = pandas.DataFrame()
# first merge all this xls together


workbook = xlrd.open_workbook('csv_merger/vaccoverage.xls')
worksheets = workbook.sheet_names()


for i in range(3,len(worksheets)):
dy = pandas.io.excel.read_excel(workbook, i, engine='xlrd', index=None)
i = i+1
df = df.append(dy)

df.index.name = "index"

df.columns = ['demography', 'area','state', 'month', 'rate', 'moe']

#Then just grab month = 'May'

may_mask = df['month'] == "May"
may_df = (df[may_mask])

#then delete some columns we dont need

may_df = may_df.drop('area', 1)
may_df = may_df.drop('month', 1)
may_df = may_df.drop('moe', 1)


print may_df.dtypes #uh oh, it sees 'rate' as type 'object', not 'float'. Better change that.

may_df = may_df.convert_objects('rate', convert_numeric=True)

print may_df.dtypes #that's better

res = may_df.pivot_table('rate', 'state', 'demography')
print res.head()


#and this is going to spit out an array of Objects, each Object a state containing its demographics
res.reset_index().to_json("thejson.json", orient='records')
#and a .csv for good measure
res.reset_index().to_csv("thecsv.csv", orient='records', encoding="utf-8")

最佳答案

您的“坏”输出是 UTF-8,显示为 CP1252。

在 Windows 上,如果文件开头没有字节顺序标记 (BOM) 字符,许多编辑器会假定默认的 ANSI 编码(美国 Windows 上的 CP1252)而不是 UTF-8。虽然 BOM 对 UTF-8 编码毫无意义,但其 UTF-8 编码的存在可作为某些程序的签名。例如,即使在非 Windows 操作系统上,Microsoft Office 的 Excel 也需要它。试试:

df.to_csv('file.csv',encoding='utf-8-sig')

该编码器将添加 BOM。

关于python - Pandas df.to_csv ("file.csv"encode ="utf-8")仍然为减号提供垃圾字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25788037/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com