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

mat*_*ver 3 csv numpy python-2.7 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,'"')
Run Code Online (Sandbox Code Playgroud)

对于以下字段,它不会.它有一个可变长度.因此,如果该值短于标准的6位数,我会得到额外的双引号:"5673"""

df['ID'] = df['ID'].str.ljust(7,'"')
df['ID'] = df['ID'].str.rjust(8,'"')
Run Code Online (Sandbox Code Playgroud)

我试过zfill,但是列中的数据是一个系列 - 当我运行时,我得到"pandas.core.series.Series"

print type(df['ID'])
Run Code Online (Sandbox Code Playgroud)

我无法使用astype将其转换为字符串.我不知道为什么.我没有进口numpy.

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

是否有一种更简单的方法可以根据需要应用双引号,还是zfill将成为可行的方法?

And*_*den 5

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

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
Run Code Online (Sandbox Code Playgroud)

分配回来:

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

In [15]: df
Out[15]:
     A
0  "a"
Run Code Online (Sandbox Code Playgroud)

如果要导出到csv,您可以使用引用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'
Run Code Online (Sandbox Code Playgroud)