索引和旋转(数据框,熊猫,python)

时间:2016-10-31 04:22:51

标签: python postgresql pandas dataframe psycopg2

我通过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

但我也有错误。我真的很震惊。

1 个答案:

答案 0 :(得分:1)

Numpy datetime64仅有292年(公元1678年 - 公元2262年),分辨率为纳秒级。有关详细信息,请参阅numpy docs

如果这是足够的范围,您可以通过减去1322年(1322 = 3000-1678),进行计算然后再增加1322年来偏向日期。

当然,微秒级分辨率可以在不偏倚你的日期的情况下工作。