首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >按date筛选pandas数据帧< date在索引中的另一个日期

按date筛选pandas数据帧< date在索引中的另一个日期
EN

Stack Overflow用户
提问于 2021-11-16 07:52:27
回答 1查看 40关注 0票数 1

我有一个pandas数据帧(来自Binance API),按符号索引,然后按日期索引:

代码语言:javascript
运行
复制
                    open      high       low     close        volume
symbol  date                                                            
BTCUSDT 2017-08-17   4261.48   4485.39   4200.74   4285.08    795.150377
        2017-08-18   4285.08   4371.52   3938.77   4108.37   1199.888264
        2017-08-19   4108.37   4184.69   3850.00   4139.98    381.309763
        2017-08-20   4120.98   4211.08   4032.62   4086.29    467.083022
        2017-08-21   4069.13   4119.62   3911.79   4016.00    691.743060
                      ...       ...       ...       ...           ...
        2021-11-10  66947.67  69000.00  62822.90  64882.43  65171.504050
        2021-11-11  64882.42  65600.07  64100.00  64774.26  37237.980580
        2021-11-12  64774.25  65450.70  62278.00  64122.23  44490.108160
        2021-11-13  64122.22  65000.00  63360.22  64380.00  22504.973830
        2021-11-14  64380.01  65550.51  63576.27  65519.10  25705.073470

我需要按日期进行过滤,比如date < '2021-11-11‘(其中'2021-11-11’是一个与date列类型匹配的datetime对象)。

我可以通过以下方式让它工作:

df = df[df['date'] < utc_datetime]

如果日期不在索引中。

我研究了df.filter(),阅读了pandas文档,并在发帖前用谷歌进行了大量搜索(并进行了搜索)。

如果这是显而易见的道歉,请给我指出正确的方向。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-11-16 07:54:20

使用MultiIndex.get_level_values

代码语言:javascript
运行
复制
df = df[df.index.get_level_values('date') < utc_datetime]

MultiIndex.droplevel

代码语言:javascript
运行
复制
df = df[df.index.droplevel(0) < utc_datetime]

或者将MultiIndex转换为列,然后转换为不同的索引,因此转换为numpy数组:

代码语言:javascript
运行
复制
df = df[df.reset_index()['date'].to_numpy() < utc_datetime]
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69985501

复制
相关文章

相似问题

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