Python 2.7 Python Pandas to_csv输出为字符串/对象值返回单个字符
我试图将结果输出到熊猫数据帧中。当我打印数据帧时,对象值显示正确,但当我在数据帧上使用to_csv函数时,我的csv输出只有每个字符串/对象值的第一个字符Python 2.7 Python Pandas to_csv输出为字符串/对象值返回单个字符,python-2.7,pandas,unicode,pyodbc,vertica,Python 2.7,Pandas,Unicode,Pyodbc,Vertica,我试图将结果输出到熊猫数据帧中。当我打印数据帧时,对象值显示正确,但当我在数据帧上使用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 = 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数据库并使用以下设置:
- 操作系统:MacOSXYosemite(10.10.5)
- Python 2.7.10 | Anaconda 2.3.0(x86_64)|(默认,2015年9月15日), 14:29:08)
- pyodbc 3.0.10
- 熊猫0.16.2
- ODBC:Vertica ODBC 6.1.3
如果您能帮助我了解如何使用pandas中的to_csv函数传递整个对象字符串,我将不胜感激。我也遇到了同样的问题,因此找到了这篇文章 要解决您的问题,我相信您需要将所有的“\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
致以最诚挚的问候,安德森·内维斯(Anderson Neves)我也面临同样的问题,因此找到了这篇文章 要解决您的问题,我相信您需要将所有的“\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
致以最诚挚的问候,Anderson Neves这可以通过
df=pd.DataFrame({'a':[u'u\x00s\x00']})复制,df.to_csv()
(sql部分并不重要)感谢@joris-我更新了问题以简化它并反映核心问题unicode字符串中的反斜杠需要转义df=pd.DataFrame({'a':[u'u\\x00s\\x00']})
返回一个正确写入u\x00s\x00
的数据帧。这可以通过df=pd.DataFrame({'a':[u'u\x00s\x00']})
,df.to\u csv()
复制(sql部分并不重要)谢谢@joris-我已经更新了问题以简化它并反映核心问题unicode字符串中的反斜杠需要转义df=pd.DataFrame({'a':[u'u\\x00s\\x00']})
返回正确写入的u\x00s\x00
数据帧。