Python 使用df.to_csv()编码错误

Python 使用df.to_csv()编码错误,python,csv,encoding,utf-8,dataframe,Python,Csv,Encoding,Utf 8,Dataframe,我试图将Twits(屏幕名称、创建时间和文本)中的信息保存到pandas数据框中,然后将数据框保存为csv文件 我得到一个编码错误 import tweepy from tweepy import OAuthHandler consumer_key = 'bla' consumer_secret = 'bla' access_token = 'bla' access_secret = 'bla' auth = OAuthHandler(consumer_key, consumer_secret

我试图将Twits(屏幕名称、创建时间和文本)中的信息保存到pandas数据框中,然后将数据框保存为csv文件

我得到一个编码错误

import tweepy
from tweepy import OAuthHandler

consumer_key = 'bla'
consumer_secret = 'bla'
access_token = 'bla'
access_secret = 'bla'
auth = OAuthHandler(consumer_key, consumer_secret)
auth.set_access_token(access_token, access_secret)
api = tweepy.API(auth)

import pandas as pd
import numpy as np
import datetime
import sys

encoding = sys.stdout.encoding or 'utf-8'
columns = ['Screen_Name', 'Time_Stamp', 'Tweet']
todays_date = datetime.datetime.now().date()
tweetDF = pd.DataFrame(columns=columns)

for tweet in tweepy.Cursor(api.search, q="manhattan", lang="en").items(10):
    lenDF = len(tweetDF)
    tweetDF.loc[lenDF] = [tweet.user.screen_name, tweet.created_at, tweet.text]

tweetDF.to_csv("C:/tweetDF")
下面是错误:

UnicodeEncodeError                        Traceback (most recent call last)
<ipython-input-11-c0aa5e7ee620> in <module>()

---> 34 tweetDF.to_csv("C:/tweetDF")

C:\Anaconda\lib\site-packages\pandas\core\frame.pyc in to_csv(self, path_or_buf, sep, na_rep, float_format, columns, header, index, index_label, mode, encoding, quoting, quotechar, line_terminator, chunksize, tupleize_cols, date_format, doublequote, escapechar, decimal, **kwds)
   1187                                      escapechar=escapechar,
   1188                                      decimal=decimal)
-> 1189         formatter.save()
   1190 
   1191         if path_or_buf is None:

C:\Anaconda\lib\site-packages\pandas\core\format.pyc in save(self)
   1465 
   1466             else:
-> 1467                 self._save()
   1468 
   1469         finally:

C:\Anaconda\lib\site-packages\pandas\core\format.pyc in _save(self)
   1565                 break
   1566 
-> 1567             self._save_chunk(start_i, end_i)
   1568 
   1569     def _save_chunk(self, start_i, end_i):

C:\Anaconda\lib\site-packages\pandas\core\format.pyc in _save_chunk(self, start_i, end_i)
   1592                                         quoting=self.quoting)
   1593 
-> 1594         lib.write_csv_rows(self.data, ix, self.nlevels, self.cols, self.writer)
   1595 
   1596 # from collections import namedtuple

pandas\lib.pyx in pandas.lib.write_csv_rows (pandas\lib.c:17992)()

UnicodeEncodeError: 'ascii' codec can't encode character u'\u2666' in position 7: ordinal not in range(128)
UnicodeEncodeError回溯(最近一次呼叫最后一次)
在()
--->34 tweetDF.至_csv(“C:/tweetDF”)
C:\Anaconda\lib\site packages\pandas\core\frame.pyc in to_csv(self、path或_buf、sep、na_rep、float_格式、列、标题、索引、索引标签、模式、编码、引号、行终止符、chunksize、tupleize cols、date_格式、双引号、转义、十进制、**kwds)
1187 escapechar=escapechar,
1188十进制=十进制)
->1189格式化程序。保存()
1190
1191如果路径_或_buf为无:
保存中的C:\Anaconda\lib\site packages\pandas\core\format.pyc(self)
1465
1466其他:
->1467自我保存()
1468
1469最后:
C:\Anaconda\lib\site packages\pandas\core\format.pyc in\u save(self)
1565中断
1566
->1567自我保存块(开始、结束)
1568
1569 def_save_chunk(self、start_i、end_i):
C:\Anaconda\lib\site packages\pandas\core\format.pyc(self、start、end)
1592报价=自报价)
1593
->1594 lib.write_csv_行(self.data、ix、self.nlevels、self.cols、self.writer)
1595
1596#从集合导入名称为双
pandas.lib.write_csv_行中的pandas\lib.pyx(pandas\lib.c:17992)()
UnicodeEncodeError:“ascii”编解码器无法对位置7中的字符u'\u2666'进行编码:序号不在范围内(128)

我尝试了各种编码增强功能,但没有成功

我找到了修复它的方法,希望与大家分享:

tweetDF.to_csv("C:/tweetDF", sep='\t', encoding = 'utf-8')

你使用的是哪一版本的Python?@MattDMo-version 2.7这篇文章可能需要Python3的更新答案。你能解释一下为什么这解决了这个问题吗?我不知道为什么这比原来的版本有效。使用此函数时,编码已默认为“utf-8”,如此函数的原始文档中所述。