jen*_*ryb 5 python csv utf-8 dataframe pandas
我正在尝试将csv文件读入pandas数据帧.但是,csv包含重音符号.我使用的是Python 2.7
我遇到了一个UnicodeDecodeError因为第一列有重音.我已经在很多网站上阅读过这样的关于CSV文件中UTF-8的问题,这篇关于与新行相关的CSV错误的博客文章,以及关于Python 2.7中UTF-8问题的博客文章.
我使用了从那里找到的答案来尝试修改我的代码.原来我有:
import pandas as pd
#Create a dataframe with the data we are interested in
df = pd.DataFrame.from_csv('MYDATA.csv')
mode = lambda ts: ts.value_counts(sort=True).index[0]
cols = df['CompanyName'].value_counts().index
df['Calls'] = df.groupby('CompanyName')['CompanyName'].transform(pd.Series.value_counts)
Run Code Online (Sandbox Code Playgroud)
Excetera.它工作,但现在传递"NÍ"和"Nê"作为客户名称给出错误:
UnicodeDecodeError: 'utf8' codec can't decode byte 0xea in position 7: invalid continuation byte
Run Code Online (Sandbox Code Playgroud)
我尝试将行更改为df = pd.read_csv('MYDATA.csv',encoding ='utf-8')但这会产生相同的错误.
所以我从研究发现的建议中尝试了这个,但它也没有用,我得到了同样的错误.
import pandas as pd
import csv
def unicode_csv_reader(utf8_data, dialect=csv.excel, **kwargs):
csv_reader = csv.reader(utf8_data, dialect=dialect, **kwargs)
for row in csv_reader:
yield [unicode(cell, 'utf-8') for cell in row]
reader = unicode_csv_reader(open('MYDATA.csv','rU'), dialect = csv.reader)
#Create a dataframe with the data we are interested in
df =pd.DataFrame(reader)
Run Code Online (Sandbox Code Playgroud)
我觉得将csv数据读入pandas数据帧并不困难.有谁知道更简单的方法?
编辑:真正奇怪的是,如果我删除带有重音字符的行,我仍然会收到错误
UnicodeDecodeError:'utf8'编解码器无法解码位置960中的字节0xd0:无效的连续字节.
这很奇怪,因为我的测试csv有19行和27列.但我希望如果我为整个csv解码utf8,它将解决问题.
尝试将其添加到脚本的顶部:
import sys
reload(sys)
sys.setdefaultencoding('utf8')
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2650 次 |
| 最近记录: |