【问题标题】:Changing pandas dataframe columns from int to string and saving as string csv将 pandas 数据框列从 int 更改为 string 并保存为 string csv
【发布时间】:2020-02-17 16:35:39
【问题描述】:

我有一个 pandas 数据框,它最初是 int 类型的列。我将类型更改为字符串,然后使用to_csv 保存它。但是在我保存的 csv 中,我没有以'1', '2',.. 的形式获取数据,而是像1,2,.. 一样。

这就是我正在做的:

>>> import pandas as pd
>>> import numpy as np
>>> df = pd.DataFrame(np.random.randint(0,5,size=(3, 4)), columns=list('ABCD'))
>>> df
   A  B  C  D
0  2  3  0  4
1  4  0  3  4
2  4  4  4  3
>>> print(df.dtypes)
A    int64
B    int64
C    int64
D    int64
dtype: object
>>> df = df.astype(str)
>>> df
   A  B  C  D
0  2  3  0  4
1  4  0  3  4
2  4  4  4  3

>>> print(df.dtypes)
A    object
B    object
C    object
D    object
dtype: object
>>> df.to_csv('./df.csv', index = False)

当我检查保存的文件时,我得到以下信息

➜ head -2 df.csv
A,B,C,D
2,3,0,4

我希望它是这样的:

➜ head -2 df.csv
A,B,C,D
"2","3","0","4"

【问题讨论】:

  • 您只需添加引用参数:df.to_csv('./df.csv', index=False, quoting=1)
  • 你不想在标题周围加上引号?

标签: python string pandas csv


【解决方案1】:

您可以将quoting 传递给to_csv

import csv
df.to_csv('a.csv', index=False,, quoting=csv.QUOTE_NONNUMERIC)

# or without importing csv module
df.to_csv('a.csv', index=False,, quoting=2)

您甚至可以使用quoting=1 处理原始数据框:

df.to_csv('a.csv' quoting=1)

输出:

"A","B","C","D"
"2","3","0","4"
"4","0","3","4"
"4","4","4","3"

【讨论】:

    【解决方案2】:

    这行得通

    df = df.apply(lambda x: '"' + str(x) + '"')
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-07-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-08-20
      • 2020-10-17
      • 2023-01-08
      相关资源
      最近更新 更多