我正在尝试将结果输出到pandas数据框中。当我打印数据框时,对象值显示正确,但是当我在数据框上使用to_csv函数时,我的csv输出只有每个字符串/对象值的第一个字符。
df = pandas.DataFrame({'a':[u'u\x00s\x00']})
df.to_csv('test.csv')
我还尝试了以下对to_csv函数的补充:
df.to_csv('test_encoded.csv', encoding= 'utf-8')
但我得到了相同的结果:
>>> print df
a
0 us
(output in csv file)
u
作为参考,我正在连接到Vertica数据库并使用以下设置:
任何有关如何使用pandas中的to_csv函数传递整个对象字符串的帮助将不胜感激。
答案 0 :(得分:0)
我遇到了同样的问题,发现了这篇文章UTF-32 in Python
要解决您的问题,我相信您需要更换所有' \ x00 '通过清空。我设法使用下面的代码编写正确的CSV
fixer = dict.fromkeys([0x00], u'')
df['a'] = df['a'].map(lambda x: x.translate(fixer))
df.to_csv('test.csv')
要解决我的Vertica问题,我必须将文件 /Library/Vertica/ODBC/lib/vertica.ini 中的编码更改为 UTF-16 下面的配置
[Driver]
ErrorMessagesPath=/Library/Vertica/ODBC/messages/
ODBCInstLib=/usr/lib/libiodbcinst.dylib
DriverManagerEncoding=UTF-16
最好的问候,
安德森·内维斯