Python 相同的数据帧在存储到数据库后不相等

Python 相同的数据帧在存储到数据库后不相等,python,pandas,postgresql,Python,Pandas,Postgresql,我有一个数据框: (编辑:实际df) 我使用以下方法将其保存到Postgres数据库中: df.to_sql('test_pp', con=engine) 当我将其作为新的_df从DB中检索回来时: (编辑:实际df) 这两个数据帧并不相等。为什么呢 df.equals(new_df) 返回False。 有什么想法吗? 附言:我还检查了订单和形状,并根据日期进行了排序 我还检查了索引 DatetimeIndex(['2019-11-01 09:45:00+00:00'], dtype='da

我有一个数据框: (编辑:实际df)

我使用以下方法将其保存到Postgres数据库中:

df.to_sql('test_pp', con=engine)
当我将其作为新的_df从DB中检索回来时: (编辑:实际df)

这两个数据帧并不相等。为什么呢

df.equals(new_df)
返回False。 有什么想法吗? 附言:我还检查了订单和形状,并根据日期进行了排序

我还检查了索引

DatetimeIndex(['2019-11-01 09:45:00+00:00'], dtype='datetime64[ns, UTC]', name='date', freq=None),
DatetimeIndex(['2019-11-01 09:45:00+00:00'], dtype='datetime64[ns, UTC]', name='date', freq=None))
还有数据类型

df['value'].dtypes, new_df['value'].dtypes
返回

(dtype('float64'), dtype('float64'))
奇怪的是

df['value'].iloc[-1:].index == new_df['value'].iloc[-1:].index
返回True


返回False

这是因为Postgres中的错误。它将最后3位四舍五入。

检查所有值。
date
值只是字符串吗?使用您提供的代码,数据帧显然是相等的。请提供从数据库返回的实际数据帧(或至少部分数据帧)。我的猜测是postgres对日期做了一些事情,但是在没有看到数据框的情况下,我们只能猜测您似乎在这里输入了一个错误
df.equals(df_new)
应该是
df.equals(new_df)
谢谢!我编辑过。是@Lukas Thaler,postgres转换日期时区。但这不可能是问题所在,正如您所看到的,它们在同一时区。@giosans,不。它们是datetimeindex
(dtype('float64'), dtype('float64'))
df['value'].iloc[-1:].index == new_df['value'].iloc[-1:].index
df['value'].iloc[-1].values == new_df['value'].iloc[-1].values