Изменение столбцов данных pandas из int в строку и сохранение в виде строки csv - PullRequest
0 голосов
/ 21 октября 2019

У меня есть pandas dataframe, который изначально представляет собой столбцы типа 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"

Ответы [ 2 ]

1 голос
/ 21 октября 2019

Вы можете передать 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"
0 голосов
/ 21 октября 2019

Это работает

df = df.apply(lambda x: '"' + str(x) + '"')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...