我是Python的新手,我有一个数据框,我是通过Pandas中的read_sql函数对Postgresql数据库的查询创建的,如下所示:
df = pd.read_sql(sql, conn, parse_dates={'asof_date'},index_col= ['asof_date']).
返回的数据有三列,它们是每日数据:
asof_date id data_value
2013-01-02 xxx 15.6
2013-01-03 xxx 15.9
2013-01-04 xxx 15.3
....
2015-06-29 xxx 14.075
2015-06-30 xxx 15.00
现在,我正在尝试对此数据进行重新采样,以便只返回业务monthend值,如果我这样做:
df.resample('BM')
ID(非数字)列自动下降,如果我重新将id列重新打包,就像发布的其他一些问题所示,它会给我一个错误。我一直在尝试各种帖子所建议的不同组合,但仍然没有运气。如果有人能够对此有所了解,我将不胜感激。非常感谢。
答案 0 :(得分:0)
我用于此问题的模式是pivot
表格,因此您只能将日期作为索引。这将允许resample
功能起作用。
pd.pivot_table(df, index='asofdate',columns='id').resample('BM').stack().reset_index()
然后,您可以stack
dataframe
并重置索引,将字段id
作为列重新显示。