Pandas: Создание фрейма данных: указание типов с помощью словаря

Созданный на 18 янв. 2015  ·  3Комментарии  ·  Источник: pandas-dev/pandas

Приносим извинения, если эта функция была предложена ранее. Многие из функций ввода-вывода (например, read_csv ) позволяют легко указать формат для каждого столбца с помощью словаря. Насколько я понимаю, это не
возможно с обычным построением фрейма данных, например:

df = pd.DataFrame(data=data, columns=columns, dtypes={'colname1': str, 'colname2': np.int})

Еще лучше , было бы здорово, если бы можно было изменить dtypes для столбцов фрейма данных, используя аналогичную конструкцию, например:

df.change_types({'colname1': str, 'colname2': np.int})

Планируется ли что-нибудь подобное?

API Design Dtypes Duplicate Reshaping

Самый полезный комментарий

Этот способ действительно работает:
data_df = data_df.astype ( dtype = {"wheel_number": "int64", "car_name": "object", "minutes_spent": "float64"})

Все 3 Комментарий

см. # 9133 и # 4464 это не так уж и сложно
Хотите попробовать?

Этот способ действительно работает:
data_df = data_df.astype ( dtype = {"wheel_number": "int64", "car_name": "object", "minutes_spent": "float64"})

Одно различие между read_csv( csvFile, dtype={..} ) и df.astpye(dtype={..} ) :
В случае read_csv это нормально, если предоставленный dict содержит больше столбцов, которых нет в csv, они изящно игнорируются. В случае astype() выдается ошибка, если все определенные столбцы отсутствуют в данных.

Это должно быть больше похоже на read_csv. Потому что у нас могут быть входящие словари, в которых могут быть одни столбцы, а другие нет. Прямо сейчас это обходной путь, который я должен сделать:

df = pd.DataFrame( incoming_data )
gtfs_dtypes = { ... } # my master dtypes dict, having all possible column names
gtfs_dtypes_specific = { x:gtfs_dtypes.get(x,'str') for x in df.columns.tolist() }
df = df.astype(dtype=gtfs_dtypes_specific)
Была ли эта страница полезной?
0 / 5 - 0 рейтинги