Автоматически выводить строковые столбцы как строки - PullRequest
0 голосов
/ 22 января 2020

По умолчанию pandas.read_csv() будет читать строковый столбец, используя объект dtype. Начиная с pandas 1.0, вместо этого можно прочитать это как строку типа dtype. Я читаю CSV, где большинство столбцов являются строками. Могу ли я сказать pandas (пытаться) читать все нечисловые c столбцы как строки по умолчанию, а не как dtypes объекта?

Код:

import pandas
import io

s = """2,e,4,w
3,f,5,x
4,g,6,z"""
df = pandas.read_csv(io.StringIO(s))
print(df.dtypes)
df = pandas.read_csv(
        io.StringIO(s),
        dtype=dict.fromkeys([1, 3], pandas.StringDtype()))
print(df.dtypes)

Это приводит в:

2     int64
e    object
4     int64
w    object
dtype: object
2     int64
e    string
4     int64
w    string
dtype: object

Я использую pandas 1.0.0rc0. Чтение всего как строки dtype напрямую должно предотвратить проблемы со смешанными типами при записи в HDFStore .

1 Ответ

2 голосов
/ 22 января 2020

Это невозможно в pandas 1.0. В настоящее время (2020-01-22) открытая проблема на github и открытый запрос на добавление, добавляющий эту функцию . В настоящее время эта функция предназначена для pandas 1.1:

С новыми dtypes (IntegerArray, StringArray и др. c.), Если вы хотите использовать их при чтении данных, вам необходимо укажите типы для всех столбцов. Было бы неплохо иметь возможность использовать новые dtypes для всех столбцов в качестве ключевых слов для read_csv (), read_excel () и т. Д. c.

Точный API еще предстоит определить , Я обновлю этот ответ, когда он будет.

Пока вам придется явно передавать имена всех столбцов, которые должны читаться как строки.

...