我尝试将数据集子集以包含两个日期之间的行。但是,当我这个功能:
data_norm[(data_norm['publication_date'] > '2016-09-01') & (data_norm['publication_date'] <= '2016-09-30')]
我明白了:
Empty DataFrame
Columns: [categories, company, contents, id, levels, locations, model_type, name, publication_date, refs, short_name, tags, type]
Index: []
我的猜测是我的子集函数中的日期与数据不同。这是数据:
0 2017-01-30 21:28:12.102749
1 2017-01-30 21:24:32.670365
2 2016-12-29 18:56:37.000000
3 2017-01-13 12:10:55.000000
4 2017-01-30 21:28:33.180670
Name: publication_date, dtype: datetime64[ns]
有什么想法吗?
答案 0 :(得分:3)
这似乎更适合作为评论,但我没有其中一个的代表。根据您提供的示例数据,空数据帧是正确的结果。所提供的日期均不属于您的搜索范围。如果您要将结束日期更改为2017-01-01 ...
data_norm[(data_norm['publication_date'] > '2016-09-01') &
(data_norm['publication_date'] <= '2017-01-01')]
它应该返回
2016-12-29 18:56:37.000000
Name: publication_date, dtype: datetime64[ns]
答案 1 :(得分:0)
以下代码也有效:
data_norm.ix[(data_norm.publication_date >= '2016-09-01') & (data_norm.publication_data <= '2017-01-01'), : ]
答案 2 :(得分:0)
有效的使用方式是
df
是数据框名称date_column
是具有dtypes作为Date的列名。两个日期之间的子设置
将iloc
或loc
用于无错误代码
df = df.loc[(df['date_column'] > '2012-08-25') & (df['date_column'] <= '2014-06-24')]
df = df.loc[(df['date_column'] > '2014-06-25') & (df['date_column'] <= '2014-09-25')]
请勿使用已弃用的ix