【发布时间】:2019-04-18 18:36:35
【问题描述】:
我的数据框的每个集合的日期范围为 1-12 个月。数据如下:
Date AB AK AR DC
0 2005-01-01 267724 37140 152536 60004
1 2005-02-01 214444 32710 149821 49280
2 2005-03-01 205938 27484 141526 41345
3 2005-04-01 99262 14562 81254 31609
4 2005-05-01 66059 8172 50241 18705
5 2005-06-01 33556 4880 27216 11796
6 2005-07-01 28057 4138 20156 9126
7 2005-08-01 25466 3892 19005 8262
8 2005-09-01 26819 3923 18776 9480
9 2005-10-01 60849 5942 31255 1664
.
.
日期为datetime 格式:
data_res_num.info()
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 164 entries, 0 to 163
Data columns (total 11 columns):
Date 164 non-null datetime64[ns]
但是当我尝试只通过某些月份(10 到 3 个月)时:
df = df.loc[(df['Date'].dt.month > 10) & (df['Date'].dt.month < 4)]
我得到一个 df 的空帧。
我认为它可能是范围,但即使我将它设置为 == 某个月份,它也会给我一个空框。
如何选择从 11 月到 3 月的范围?
【问题讨论】:
-
错字:没有大于 10 且小于 3 的整数。
-
就是这样。我也尝试了
df = df.loc[(df['Date'].dt.month == 10) & (df['Date'].dt.month == 4)],得到了相同的结果,我知道存在 10 和 4。 -
@jpp pandas 将选择满足这些列条件之一的行,它们不必同时满足......
-
@jpp,呵呵,他需要
|,我的错!哈哈,真丢人。 -
嘿@HelloToEarth,
|是OR运算符,这意味着pandas 将选择满足任一条件的行,但是,当您使用&这是AND运算符时,这意味着这两个条件必须同时满足。您不能同时拥有大于 10 和小于 4 的月份,也不能拥有同时等于 4 和 10 的月份。因此,您需要使用OR运算符|。
标签: python python-3.x python-2.7 pandas dataframe