在具有unicode列名的数据帧上使用pandas方法to_sql时的UnicodeEncodeError

时间:2015-10-26 02:54:44

标签: python pandas unicode

这是我第一次发布堆栈溢出,所以请耐心等待。我一直在网上搜索一整天,但我无法解决这个问题。

基本上,我在列名中有一个带有unicode字符的Pandas DataFrame,当我尝试使用to_sql将数据存储在数据库中时,我得到一个UnicodeEncodeError。我可以使用以下代码重现错误:

import pandas as pd
from sqlalchemy import create_engine

df = pd.DataFrame([[1,2],[3,4]], columns = [u'\xe9',u'b'])
engine = create_engine('mysql://root:pass@localhost/testdb')
df.to_sql('data', engine, if_exists = 'replace', index = False)

回溯的最后一行如下所示:

C:\Users\isaac_000\Anaconda\lib\site-packages\pandas\io\sql.pyc in _get_column_names_and_types(self, dtype_mapper)
857              dtype_mapper(self.frame.iloc[:, i]),
858              False)
--> 859             for i in range(len(self.frame.columns))
860             ]
861 

UnicodeEncodeError: 'ascii' codec can't encode character u'\xe9' in position 0: ordinal not in range(128)

我很感激你们可以提供的任何帮助。如果您需要更多信息,请与我们联系。谢谢!

1 个答案:

答案 0 :(得分:0)

这是当前to_sql方法中的一个错误,我在此处提交了这个错误:https://github.com/pydata/pandas/issues/11431(可能会在版本0.17.1中修复)

作为解决方法,我建议