Экспорт Pandas DataFrame to_csv изменяет тип столбца - PullRequest
0 голосов
/ 04 мая 2018

Надеюсь, простой запрос.

Я обнаружил, что когда я строю DataFrame и устанавливаю типы данных столбца, а затем экспортирую его в csv, он выполняет преобразование типа данных числовой строки в целое число.

Например, значением может быть «0000», и CSV заканчивается значением 0. Но мне нужно, чтобы оно сохранило количество символов в строке и сохранило CSV как «0000».

Кто-нибудь знает способ сохранить строку, а не преобразованный тип данных?

Установка типа данных после импорта не решает проблему (прежде чем кто-либо скажет мне, что я могу установить его после / после импорта), так как это вызывает проблему, заключающуюся в том, что при преобразовании целого числа в строку вы должны также настроить начальные 0 на каждый импорт, что не является оптимальным.

Надеюсь, я упускаю из виду нечто простое.

(EDIT) о, и моя строка экспорта - это просто экспорт, поэтому, возможно, я просто не понимаю аргумент, который необходимо предоставить.

df.to_csv("Test.csv", index=False)

1 Ответ

0 голосов
/ 04 мая 2018

Предполагая, что df['your_column'] - это столбец, который вы хотите сохранить, вы можете использовать аргумент dtype в read_csv():

df.read_csv('temp.csv', dtype={'your_column': str})

Если это не работает, вы уверены, что ваши столбцы содержат строки для начала? Потому что вот поведение, которое я вижу:

>>> df1 = pd.DataFrame({'a': ['0000', '0000', '0100',]})
>>> df1
      a
0  0000
1  0000
2  0100
>>> df1.to_csv('temp.csv', index=False)
>>> df2.read_csv('temp.csv', dtype={'a': str})
>>> df2
      a
0  0000
1  0000
2  0100

Возможно, ваша проблема не в экспорте или импорте, а в создании.

df = pd.DataFrame({'a': 0000, 0000, 0100]})

Это будет кадр данных со значениями 0,0,100. Если вы хотите, чтобы они были строками, вам нужно создать их как строки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...