#pandas #etl
#pandas #etl
Вопрос:
Итак, я привык к ETL базы данных. В SQL я создаю таблицу и устанавливаю длины символов, типы данных и т.д. Насколько я понимаю, pandas использует максимальную длину всего, что помещается в фрейм данных. Хорошо, если вы остаетесь на python, но мне нужно указать эти вещи явно.
Вот некоторый базовый код для работы, приветствуются указатели:
df=pd.Dataframe()
df['ID'] = some data probably i 1
df['text'] = some text length set to max 255
Ответ №1:
Вот информативная статья о типах данных pandas:
https://pbpython.com/pandas_dtypes.html
Если вы хотите просмотреть типы данных вашего фрейма данных, вы можете сделать:
df.info()
Вы можете явно задать типы данных, в которых вы можете игнорировать или вызывать ошибки с помощью .astype():
df['ID'] = df['ID'].astype(int, errors='raise')
df['ID'] = df['ID'].astype(int, errors='ignore')
Для строк вы можете задать тип данных следующим образом:
df['text'] = df['text'].astype('string')
Или, если вы используете более старую версию pandas <1.0, выполните:
df['text'] = df['text'].astype(str)
Если вы хотите установить максимальную длину для своей строки, вы могли бы сделать:
df['text'] = df['text'].str.slice(0, 255)
Комментарии:
1. Я не уверен, что эта последняя часть имеет смысл, это просто усекло бы все существующие данные в
df['text']
столбце, вместо того, чтобы требовать, чтобы длина данных, введенных в этот столбец, не могла превышать255
символов. Я не уверен, возможно ли последнее в pandas, но это то, о чем, я думаю, спрашивает OP (хотя я могу ошибаться).2. @baxx согласен, но мне интересно, есть ли способ заранее установить максимальную длину столбца string
3. не afaik:/ (что не означает, что это не так), чтобы быть ясным, я не знаю ничего лучше вашего ответа, просто подумал, что стоит подчеркнуть, что это может быть ограничением (и что запрос OP может быть невозможен с использованием pandas). Если кто-то не создаст пользовательский класс или что-то, основанное на исправлениях pandas / monkey, или что-то в этом роде (что было бы интересно посмотреть)
4. Спасибо за ваши комментарии, я буду преобразовывать pandas df в geopandas, добавляя некоторую геометрию. Я экспортирую его в формат шейп-файла, и клиент установил определенные критерии для длин полей, я надеялся, что будет какой-то способ установить модель данных, как это делает Django. В противном случае мне нужно выполнить некоторые серьезные изменения за пределами python 3.x.