Панды to_sql, как упомянуть dtypes для массива с плавающей точкой - PullRequest
2 голосов
/ 24 октября 2019

Привет, у меня есть pandas dataframe со столбцом 'amps', который float array ([1.33,2.67,39.64,4.76....]) другой столбец с именем '("John","Smith"..etc), и другой' age ', такой как (22,34,56..etc) .Name и age не являютсямассив. Я хочу сохранить фрейм данных в виде таблицы в postgres.

. Сейчас я не могу сделать это из-за следующей ошибки

sqlalchemy.exc.ProgrammingError: (psycopg2.ProgrammingError) column "amplitudes" is of type double precision but expression is of type numeric[]

Я попытался упомянуть dtypes, как указано здесь .

Ниже была моя попытка:

from sqlalchemy import create_engine
engine = create_engine('postgresql://scott:tiger@localhost:5432/mydatabase')
df.to_sql('table_name', engine,dtype ={amps':postgresql.ARRAY(sqlalchemy.types.REAL),
        'name':sqlalchemy.types.string,'age' :sqlalchemy.types.Integer() )

Но вышеупомянутая ошибка все еще возвращается. Как я могу вставить фрейм данных в psql. Какие dtypes я должен дать здесь. Документация меня очень смущает

Когда использовать postgresql.ARRAY, а когда sqlalchemy.types. В чем разница между Real,Decimal,Float и т. Д., Когда использовать какой. Был бы рад, если бы вы могли объяснить мне это вкратце.

Спасибо

...