Python 2.7 python/pandas:需要帮助为列添加双引号吗

Python 2.7 python/pandas:需要帮助为列添加双引号吗,python-2.7,csv,numpy,double-quotes,Python 2.7,Csv,Numpy,Double Quotes,我需要在脚本生成的csv文件中的特定列中添加双引号 下面是我做这件事的愚蠢方式。对于这两个固定宽度字段,它起作用: df['DATE'] = df['DATE'].str.ljust(9,'"') df['DATE'] = df['DATE'].str.rjust(10,'"') df['DEPT CODE'] = df['DEPT CODE'].str.ljust(15,'"') df[DEPT CODE'] = df['DEPT CODE'].str.rjust(16,'"') 对于下面

我需要在脚本生成的csv文件中的特定列中添加双引号

下面是我做这件事的愚蠢方式。对于这两个固定宽度字段,它起作用:

df['DATE'] = df['DATE'].str.ljust(9,'"')
df['DATE'] = df['DATE'].str.rjust(10,'"')

df['DEPT CODE'] = df['DEPT CODE'].str.ljust(15,'"')
df[DEPT CODE'] = df['DEPT CODE'].str.rjust(16,'"')
对于下面的字段,它不是。它的长度可变。因此,如果值比标准的6位数字短,我会得到额外的双引号:“5673”“

我尝试过zfill,但列中的数据是一个系列--我在运行时得到“pandas.core.series.series”

print type(df['ID'])
我还无法使用astype将其转换为字符串。我不知道为什么。我没有进口numpy

我尝试使用len()获取ID号的长度,并将其作为第一个参数传递给str.ljust和str.rjust,但我认为它由于数据不是字符串而挂起


是否有一种更简单的方法可以根据需要使用双引号,或者zfill将是一种方法?

您可以在以下内容之前/之后添加语音标记:

In [11]: df = pd.DataFrame([["a"]], columns=["A"])

In [12]: df
Out[12]:
   A
0  a

In [13]: '"' + df['A'] + '"'
Out[13]:
0    "a"
Name: A, dtype: object
将此任务分配回:

In [14]: df['A'] = '"' + df.A + '"'

In [15]: df
Out[15]:
     A
0  "a"

如果用于导出到csv,您可以使用quoting kwarg:

In [21]: df = pd.DataFrame([["a"]], columns=["A"])

In [22]: df.to_csv()
Out[22]: ',A\n0,a\n'

In [23]: df.to_csv(quoting=1)
Out[23]: '"","A"\n"0","a"\n'

使用
numpy
,而不是
pandas
,可以在保存到csv文件时指定格式设置方法。举一个非常简单的例子:

In [209]: np.savetxt('test.txt',['string'],fmt='%r')
In [210]: cat test.txt
'string'

In [211]: np.savetxt('test.txt',['string'],fmt='"%s"')
In [212]: cat test.txt
"string"

如果使用
np.savetxt
来编写
csv
我会尝试
fmt=''%s'
。我得到一个错误“TypeError:ufunc'add'没有包含签名匹配类型dtype('S21')dtype('S21')dtype('S21')的循环。”当我尝试--df['A']='“+df.A+'”“熊猫不使用s21,它应该使用object,是numpy还是熊猫的旧版本?@mattrweaver肯定有什么可疑之处,熊猫不应该使用s21(如果您正在读取csv,那么它是……您如何导入数据/您是否正在通过返回numpy数组的库运行数据?@mattrweaver Great!!啊哈,您需要将数字列转换为字符串,然后才能添加字符串(可能只有python 3?),因此
'+df.ID.astype(str)+'
In [209]: np.savetxt('test.txt',['string'],fmt='%r')
In [210]: cat test.txt
'string'

In [211]: np.savetxt('test.txt',['string'],fmt='"%s"')
In [212]: cat test.txt
"string"