繁体   English   中英

在多个选择条件下使用.loc

[英]Using .loc with multiple selection criteria

我想运行.loc来捕获需要多个条件的数据子集。 就像是:

df.loc[(
    df["date"] > datetime.datetime.strptime('Jan 1 2000', '%b %d %Y').date() & 
    df["date"] < datetime.datetime.strptime('Jan 1 2009', '%b %d %Y').date() )]

当然,这种语法是不正确的。 正确的语法是什么?

在复合布尔条件时,由于运算符的优先级,您需要添加括号,因此以下各项应适用:

df.loc[( df["date"] > datetime.datetime.strptime('Jan 1 2000', '%b %d %Y').date()) & (df["date"] < datetime.datetime.strptime('Jan 1 2009', '%b %d %Y').date() )]

我还认为,仅传递日期字符串进行比较会更容易:

In [6]:    
df = pd.DataFrame({'a':pd.date_range(start=dt.datetime(2015,1,1), end=dt.datetime(2015,2,4))})
df[(df['a'] > '2015/01/14') & (df['a'] < '2015/02/01')]

Out[6]:
            a
14 2015-01-15
15 2015-01-16
16 2015-01-17
17 2015-01-18
18 2015-01-19
19 2015-01-20
20 2015-01-21
21 2015-01-22
22 2015-01-23
23 2015-01-24
24 2015-01-25
25 2015-01-26
26 2015-01-27
27 2015-01-28
28 2015-01-29
29 2015-01-30
30 2015-01-31

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM