python pandas csv utf_8_sig_python – Pandas df.to_csv(“file.csv”encode =“utf-8”)仍为减号提供垃圾字符...

我已经阅读了关于Pandas’to_csv(……等等)的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.来源:https://www.icode9.com/content-1-485351.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值