我有一个包含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
答案 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))