我通过psycopg2模块从Postgre SQL查询中获取一个表。该表看起来像:
ct i v
1 3429-03-19 20:00:00 1 45
2 3433-02-10 21:00:00 1 65
3 3433-02-10 22:00:00 2 44
然后我将其转换为数据框。我需要根据ct列中的日期(datetime.date)对i和v进行下采样。然后透视数据框,使日期成为索引,列将是i和v的每日中位数。
table=cur.fetchall() #resulting table from psycopg2 (the SQL query)
col = ['Date', 'Daily i', 'Daily v']
pt_df = pd.DataFrame (rows, columns=col)
pt_df2 = pt_df.set_index(['Date'])
pt_df2
我尝试将此日期设置为索引列,但我收到的错误是OutOfBoundsDatetime:超出界限纳秒时间戳:3429-03-19 20:00:00。我怎样才能解决这个问题?我尝试将ct列转换为pd.to_datetime。但这也导致了错误。
我尝试像这样转动df:
df = rows
pt_df2 = pd.pivot_table(df, index=["Date"], columns = col, aggfunc=[np.median(df, axis=1, 'i'), np.median(df, axis=1, 'v')])
pt_df2
但我也有错误。我真的很震惊。
答案 0 :(得分:1)
Numpy datetime64仅有292年(公元1678年 - 公元2262年),分辨率为纳秒级。有关详细信息,请参阅numpy docs。
如果这是足够的范围,您可以通过减去1322年(1322 = 3000-1678),进行计算然后再增加1322年来偏向日期。
当然,微秒级分辨率可以在不偏倚你的日期的情况下工作。