python - 日期过滤器问题(python)
问题描述
我在从我的数据框中过滤特定时期的日期时遇到了一些问题。
例如,我需要 2014 年 9 月 14 日至 2020 年 9 月 30 日之间的日期。为了得到那个,我用
df = df.loc[(df['date'] >= '14/09/2014') and (df['date'] <= '30/08/2020')]
(值错误)以及
df = df.loc['14/09/2014':'30/08/2020']
--> 哪种有效,但它也显示了超出特定范围的日期(例如 1965 年 9 月 12 日)。
有关其他信息:我将日期列('edate')设置为索引列,请参见以下代码:
df = pd.read_csv('https://manifestoproject.wzb.eu/down/data/2020b/datasets/MPDataset_MPDS2020b.csv', parse_dates=['date'], index_col='edate')
另外,我使用 dtale 通过 localhost 显示结果。
有人可以解释为什么它显示超出范围的更多日期(使用 14/09/2014:30/08/2020 的代码时)?另外,如果有人能为我的问题提供解决方案,我将不胜感激!
此致
解决方案
有 2 个问题 - 使用按位and
和&
按日期时间比较是必要的格式YYYY-MM-DD
:
df = df[(df['date'] >= '2014-09-14') &(df['date'] <= '2020-08-30')]
检查数据:
#original data
print (len(df))
4656
#only changed and to &
df1 = df.loc[(df['date'] >= '14/09/2014') & (df['date'] <= '30/08/2020')]
print (len(df1))
4656
# changed and to & and format YYYY-MM-DD
df1 = df[(df['date'] >= '2014-09-14') &(df['date'] <= '2020-08-30')]
print (len(df1))
585
推荐阅读
- unit-testing - 使用 easymock 模拟 java.util.Properties 时获取 java.lang.IllegalStateException
- html - 滚动仅在主 Content-Div 中有效的主布局
- laravel - Laravel 望远镜没有找到任何东西
- ios - Xcode 编译错误:Command Lex 失败,退出代码为非零
- swift - 如何在不清除 GoogleMap 的情况下更新多个位置
- node.js - 如何在 oracledb 中使用 column.nextval
- c# - 在 .Net Core 项目中使用 AutoMapper 时,ForMember 设置不起作用
- java - 在 Java 中安全地创建 hwid
- python - 如何在div中获取文本
- javascript - highstock 如何表示大于屏幕分辨率的点数?