Pandas: как создать DataFrame с указанными типами, используя новые строковые типы и типы int? - PullRequest
1 голос
/ 30 апреля 2020

Я хотел бы создать DataFrame с новыми обнуляемыми скалярными типами . Я использую pandas 1.0.3.

Данные импорта:

import numpy as np
import pandas as pd
from collections import OrderedDict

Если у меня есть имена столбцов:

headers = ['field',
 'yr_code',
 'start_col',
 'end_col',
 'year',
 'variable_name',
 'characteristics',
 'source',
 'date_on']

и типы данных:

dt = [pd.StringDtype(),
 pd.Int64Dtype(),
 np.int16,
 np.numpy.int16,
 pd.Int64Dtype(),
 pd.StringDtype(),
 pd.StringDtype(),
 pd.StringDtype(),
 pd.StringDtype()]

Я попытался создать спецификации столбцов в виде:

columns = OrderedDict((h, dt[i]) for i, h in enumerate(headers))  

и фрейм данных в виде (с данными примера):

data = [['F00001', pd.NA, 1, 1, '', 'Blank', '', pd.NA, pd.NA]]     
f = pd.DataFrame(data, columns = columns)

К сожалению, это не похоже на работу:

>>> f.dtypes
field              object
yr_code            object
start_col           int64
end_col             int64
year               object
variable_name      object
characteristics    object
source             object
date_on            object
dtype: object

Я понимаю, что dtypes может возвращать базовые типы, но, конечно, yr_code, поскольку объект неверен. Как правильно создать DataFrame для этих типов?

1 Ответ

0 голосов
/ 30 апреля 2020

Вы можете сделать f.convert_dtypes() чтобы получить:

>>> f.convert_dtypes().dtypes
field              string
yr_code            object
start_col           Int64
end_col             Int64
year               string
variable_name      string
characteristics    string
source             object
date_on            object
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...