DataFrame筛选数据与loc用法

时间:2021-03-26 22:56:41

DataFrame筛选数据与loc用法

python中pandas下的DataFrame是一个很不错的数据结构,附带了许多操作、运算、统计等功能。

如何从一个DataFrame中筛选中出一个元素呢。

以tushare返回的交易日信息为例。

df = ts.trade_cal()

数据如下:

     calendarDate  isOpen
0      1990/12/19       1
1      1990/12/20       1
2      1990/12/21       1
3      1990/12/22       0
4      1990/12/23       0
5      1990/12/24       1
6      1990/12/25       1
7      1990/12/26       1
8      1990/12/27       1
9      1990/12/28       1
10     1990/12/29       0
11     1990/12/30       0
12     1990/12/31       1
13       1991/1/1       0
14       1991/1/2       1
15       1991/1/3       1
16       1991/1/4       1
17       1991/1/5       0
18       1991/1/6       0
19       1991/1/7       1
20       1991/1/8       1
21       1991/1/9       1
22      1991/1/10       1
23      1991/1/11       1
24      1991/1/12       0
25      1991/1/13       0
26      1991/1/14       1
27      1991/1/15       1
28      1991/1/16       1
29      1991/1/17       1
...           ...     ...
9845   2017/12/02       0
9846   2017/12/03       0
9847   2017/12/04       1
9848   2017/12/05       1
9849   2017/12/06       1
9850   2017/12/07       1
9851   2017/12/08       1
9852   2017/12/09       0
9853   2017/12/10       0
9854   2017/12/11       1
9855   2017/12/12       1
9856   2017/12/13       1
9857   2017/12/14       1
9858   2017/12/15       1
9859   2017/12/16       0
9860   2017/12/17       0
9861   2017/12/18       1
9862   2017/12/19       1
9863   2017/12/20       1
9864   2017/12/21       1
9865   2017/12/22       1
9866   2017/12/23       0
9867   2017/12/24       0
9868   2017/12/25       1
9869   2017/12/26       1
9870   2017/12/27       1
9871   2017/12/28       1
9872   2017/12/29       1
9873   2017/12/30       0
9874   2017/12/31       0

如何取出某个日期的信息呢。例如年底了,想知道除夕前最后一个交易日是哪天。此处使用筛选功能。

df[df.calendarDate=="2017/12/31"]

输出如下:

>>> df[df.calendarDate=="2017/12/31"]
     calendarDate  isOpen
9874   2017/12/31       0

>>> df[df.icol(0)=="2017/12/11"]
__main__:1: FutureWarning: icol(i) is deprecated. Please use .iloc[:,i]
     calendarDate  isOpen
9854   2017/12/11       1

注意一定要写上双等号一定要写上双等号一定要写上双等号。重要的事情说3遍。。。
因为如果是单等号,会报语法异常的。。。

loc函数

关于loc这个坑爹的函数的用法,咋说呢,不要被他的”纯以标签名来进行索引”迷惑了。因为如果你给Loc中的第一个参数一个str的话,极有可能返回的是一个异常,说不在index中。
。。。。
坑爹。。。。
这个loc的用法不是根据某个位置内容筛选的含义,仍然是对行、对列的一种筛选。比如你某行的索引自己设置标签啥的。。很让人一头雾水的设计。跟ix就是重复的。。。。
大多数情况下的应用场景就是还是用数字取行,用str取列。
比如loc[0:3,[“a”,”b”]]。取0到第3行(左闭右开,非整型值时左闭右闭。。。),”a”列与”b”列。