首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >“用户警告:布尔系列键将被重新编入索引以匹配DataFrame索引”的熊猫的筛选日期范围。

“用户警告:布尔系列键将被重新编入索引以匹配DataFrame索引”的熊猫的筛选日期范围。
EN

Stack Overflow用户
提问于 2022-10-18 16:43:47
回答 1查看 38关注 0票数 3

我尝试使用日期范围过滤数据,其中我有初始的start_date,而end_datestart_date之后的x天。基本上,我想要的就是SQL中start_dateDATE_ADD(start_date, INTERVAL x DAYS) AS end_date子句之间的WHERE DATE_ADD(start_date, INTERVAL x DAYS) AS end_date子句。

下面是我的dataframe示例

代码语言:javascript
运行
复制
+-----------+-----------+
| date      | aggregate |
+-----------+-----------+
| ...       | ...       |
|2022-08-31 | 42        |
|2022-09-01 | 30        |
|2022-09-02 | 65        |
|2022-09-03 | 55        |
| ...       | ...       |
+-----------+-----------+

所以,我在python上试过这个

代码语言:javascript
运行
复制
import pandas as pd
from datetime import datetime, timedelta

start_date = datetime.strptime("2022-08-31", "%Y-%m-%d")
end_date = start_date + timedelta(days=3) # let say I want to have 3 days range

df_filtered = df[(df['date'] >= start_date ) & (df['date'] < end_date ]

但是,它提高了UserWarning: Boolean Series key will be reindexed to match DataFrame index.,并产生了一个缺少几个日期的数据。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-10-18 17:16:21

不如将date列设置为索引,然后筛选:

代码语言:javascript
运行
复制
import pandas as pd
from datetime import datetime, timedelta

df = pd.DataFrame([
    ['2022-08-31',42],
    ['2022-09-01',30],
    ['2022-09-02',65],
    ['2022-09-03',55],
],columns=['date','aggregate'])

df.date=pd.to_datetime(df['date'])
df.set_index('date',inplace=True)
start_date = datetime.strptime("2022-08-31", "%Y-%m-%d")
end_date = start_date + timedelta(days=3) # let say I want to have 3 days range
df[(df.index >= start_date ) & (df.index < end_date)]


aggregate
date    
2022-08-31  42
2022-09-01  30
2022-09-02  65
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74114566

复制
相关文章

相似问题

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