基于DataFrame筛选数据与loc的用法详解
DataFrame筛选数据与loc用法
python中pandas下的DataFrame是一个很不错的数据结构,附带了许多操作、运算、统计等功能。
如何从一个DataFrame中筛选中出一个元素呢。
以tushare返回的交易日信息为例。
df=ts.trade_cal()
数据如下:
calendarDateisOpen 01990/12/191 11990/12/201 21990/12/211 31990/12/220 41990/12/230 51990/12/241 61990/12/251 71990/12/261 81990/12/271 91990/12/281 101990/12/290 111990/12/300 121990/12/311 131991/1/10 141991/1/21 151991/1/31 161991/1/41 171991/1/50 181991/1/60 191991/1/71 201991/1/81 211991/1/91 221991/1/101 231991/1/111 241991/1/120 251991/1/130 261991/1/141 271991/1/151 281991/1/161 291991/1/171 ......... 98452017/12/020 98462017/12/030 98472017/12/041 98482017/12/051 98492017/12/061 98502017/12/071 98512017/12/081 98522017/12/090 98532017/12/100 98542017/12/111 98552017/12/121 98562017/12/131 98572017/12/141 98582017/12/151 98592017/12/160 98602017/12/170 98612017/12/181 98622017/12/191 98632017/12/201 98642017/12/211 98652017/12/221 98662017/12/230 98672017/12/240 98682017/12/251 98692017/12/261 98702017/12/271 98712017/12/281 98722017/12/291 98732017/12/300 98742017/12/310
如何取出某个日期的信息呢。例如年底了,想知道除夕前最后一个交易日是哪天。此处使用筛选功能。
df[df.calendarDate=="2017/12/31"]
输出如下:
>>>df[df.calendarDate=="2017/12/31"] calendarDateisOpen 98742017/12/310 >>>df[df.icol(0)=="2017/12/11"] __main__:1:FutureWarning:icol(i)isdeprecated.Pleaseuse.iloc[:,i] calendarDateisOpen 98542017/12/111
注意一定要写上双等号一定要写上双等号一定要写上双等号。重要的事情说3遍。。。
因为如果是单等号,会报语法异常的。。。
loc函数
关于loc这个坑爹的函数的用法,咋说呢,不要被他的”纯以标签名来进行索引”迷惑了。因为如果你给Loc中的第一个参数一个str的话,极有可能返回的是一个异常,说不在index中。。。。。
坑爹。。。。
这个loc的用法不是根据某个位置内容筛选的含义,仍然是对行、对列的一种筛选。比如你某行的索引自己设置标签啥的。。很让人一头雾水的设计。跟ix就是重复的。。。。
大多数情况下的应用场景就是还是用数字取行,用str取列。
比如loc[0:3,[“a”,”b”]]。取0到第3行(左闭右开,非整型值时左闭右闭。。。),”a”列与”b”列。
以上这篇基于DataFrame筛选数据与loc的用法详解就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持毛票票。