首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从包含每日数据的Pandas数据框中获取业务月末价值

从包含每日数据的Pandas数据框中获取业务月末价值
EN

Stack Overflow用户
提问于 2015-07-15 22:19:53
回答 2查看 447关注 0票数 0

我是Python的新手,我有一个数据框架,它是通过Pandas中的read_sql函数通过对Postgresql数据库的查询创建的,如下所示:

代码语言:javascript
复制
df = pd.read_sql(sql, conn, parse_dates={'asof_date'},index_col=    ['asof_date']).

返回的数据有三列,它们是如下所示的每日数据:

代码语言:javascript
复制
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

现在,我正在尝试对此数据进行重新采样,以便只返回业务月末的值,如果我这样做:

代码语言:javascript
复制
df.resample('BM')

id (非数字)列会自动删除,如果我像其他一些问题所建议的那样重新堆叠id列,它会给我一个错误。我已经尝试了不同的组合,就像各种帖子所建议的那样,但仍然没有成功。如果有人能对此有所了解,我将不胜感激。非常感谢。

EN

回答 2

Stack Overflow用户

发布于 2015-07-16 00:22:11

我在这个问题上使用的模式是对表进行pivot,这样您就只将日期作为索引。这将允许resample函数工作。

代码语言:javascript
复制
pd.pivot_table(df, index='asofdate',columns='id').resample('BM').stack().reset_index()

然后,您可以对dataframe执行stack操作并重置索引,以将字段id放回列中。

票数 0
EN

Stack Overflow用户

发布于 2015-07-16 00:24:30

更新:

在玩弄了这个之后,我想我找到了我的问题的解决方案,就像JAB建议的那样。

我将首先使用列id进行分组:

代码语言:javascript
复制
grouped_by_id = df.groupby('id')

在此之后,我将应用resample方法,然后使用reset_index()方法来返回一个DataFrame,它看起来与我之前的差不多:

代码语言:javascript
复制
resampled_data=grouped_by_id.resample('BM').reset_index()
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31433031

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档