Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/python-2.7/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 2.7 Python Pandas to_csv输出为字符串/对象值返回单个字符_Python 2.7_Pandas_Unicode_Pyodbc_Vertica - Fatal编程技术网

Python 2.7 Python Pandas to_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

我试图将结果输出到熊猫数据帧中。当我打印数据帧时,对象值显示正确,但当我在数据帧上使用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数据库并使用以下设置:

  • 操作系统: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
数据帧。