如何用Pandas读取UTF-8文件?

时间:2016-04-06 21:39:52

标签: python csv pandas utf-8

我有一个包含twitter数据的UTF-8文件,我试图将其读入Python数据框但我只能获得'对象'类型而不是unicode字符串:

# file 1459966468_324.csv
#1459966468_324.csv: UTF-8 Unicode English text
df = pd.read_csv('1459966468_324.csv', dtype={'text': unicode})
df.dtypes
text               object
Airline            object
name               object
retweet_count     float64
sentiment          object
tweet_location     object
dtype: object

使用Pandas读取和强制UTF-8数据到unicode的正确方法是什么?

这不能解决问题:

df = pd.read_csv('1459966468_324.csv', encoding = 'utf8')
df.apply(lambda x: pd.lib.infer_dtype(x.values))

文本文件在这里: https://raw.githubusercontent.com/l1x/nlp/master/1459966468_324.csv

4 个答案:

答案 0 :(得分:14)

正如另一张海报所提到的,你可以试试:

df = pd.read_csv('1459966468_324.csv', encoding = 'utf8')

然而,这仍然会让你看到'对象'当你打印dtypes。要确认它们是utf8,请在阅读CSV后尝试此行:

df.apply(lambda x: pd.lib.infer_dtype(x.values))

示例输出:

args            unicode
date         datetime64
host            unicode
kwargs          unicode
operation       unicode

答案 1 :(得分:4)

encoding关键字与相应的参数一起使用:

df = pd.read_csv('1459966468_324.csv', encoding='utf8')

答案 2 :(得分:1)

Pandas在object s中存储字符串。在python 3中,默认情况下所有字符串都是unicode。因此,如果你使用python 3,你的数据已经是unicode(不要被类型object误导)。

如果你有python 2,那么使用df = pd.read_csv('your_file', encoding = 'utf8')。然后尝试例如pd.lib.infer_dtype(df.iloc[0,0])(我猜第一个col由字符串组成。)

答案 3 :(得分:0)

看起来这个函数的位置已经移动了。这在 1.0.1 上对我有用:

df.apply(lambda x: pd.api.types.infer_dtype(x.values))