Pandas在使用read_sql时不假设dtypes



我在sql中有一个表,我想读取到pandas数据帧中。我可以读入表,但所有列的数据类型都作为对象读入。当我将表写入csv,然后使用read_csv重新读取时,假设数据类型正确。显然,这个中间步骤效率很低,我只想能够在假设正确数据类型的情况下直接从sql中读取数据。

我在df中有650列,所以显然手动指定数据类型是不可能的。

因此,数据库中的所有数据类型都定义为varchar。

read_sql似乎读取了模式,并基于此假定数据类型。奇怪的是,我无法使用infer_objects((转换这些数据类型。

唯一的方法是写入csv,然后使用pd.read_csv((读取csv。

不,并没有真正检查元数据。

默认情况下,每个熊猫的文档数据类型都是推断出来的,而其他类型则是根据需要启用的(例如,日期格式需要额外的指导(。

因此,裸pd.read_sql不是完全健壮的,但可能适用于您的特定数据。

在我的Postgres上,这看起来像

column_name     postgres    pandas
patient_id  character varying   object
spell_id    character varying   object
spell_start_date    date    object
spell_start_time    time without time zone  object
spell_end_date  date    object
spell_end_time  time without time zone  object