DataFrame篩選數據與loc用法
python中pandas下的DataFrame是一個很不錯的數據結構,附帶了許多操作、運算、統計等功能。
如何從一個DataFrame中篩選中出一個元素呢。
以tushare返回的交易日信息為例。
df = ts.trade_cal()
數據如下:
calendarDate isOpen0 1990/12/19 11 1990/12/20 12 1990/12/21 13 1990/12/22 04 1990/12/23 05 1990/12/24 16 1990/12/25 17 1990/12/26 18 1990/12/27 19 1990/12/28 110 1990/12/29 011 1990/12/30 012 1990/12/31 113 1991/1/1 014 1991/1/2 115 1991/1/3 116 1991/1/4 117 1991/1/5 018 1991/1/6 019 1991/1/7 120 1991/1/8 121 1991/1/9 122 1991/1/10 123 1991/1/11 124 1991/1/12 025 1991/1/13 026 1991/1/14 127 1991/1/15 128 1991/1/16 129 1991/1/17 1... ... ...9845 2017/12/02 09846 2017/12/03 09847 2017/12/04 19848 2017/12/05 19849 2017/12/06 19850 2017/12/07 19851 2017/12/08 19852 2017/12/09 09853 2017/12/10 09854 2017/12/11 19855 2017/12/12 19856 2017/12/13 19857 2017/12/14 19858 2017/12/15 19859 2017/12/16 09860 2017/12/17 09861 2017/12/18 19862 2017/12/19 19863 2017/12/20 19864 2017/12/21 19865 2017/12/22 19866 2017/12/23 09867 2017/12/24 09868 2017/12/25 19869 2017/12/26 19870 2017/12/27 19871 2017/12/28 19872 2017/12/29 19873 2017/12/30 09874 2017/12/31 0
如何取出某個日期的信息呢。例如年底了,想知道除夕前最后一個交易日是哪天。此處使用篩選功能。
df[df.calendarDate=="2017/12/31"]
輸出如下:
>>> df[df.calendarDate=="2017/12/31"] calendarDate isOpen9874 2017/12/31 0>>> df[df.icol(0)=="2017/12/11"]__main__:1: FutureWarning: icol(i) is deprecated. Please use .iloc[:,i] calendarDate isOpen9854 2017/12/11 1
注意一定要寫上雙等號一定要寫上雙等號一定要寫上雙等號。重要的事情說3遍。。。
因為如果是單等號,會報語法異常的。。。
loc函數
關于loc這個坑爹的函數的用法,咋說呢,不要被他的”純以標簽名來進行索引”迷惑了。因為如果你給Loc中的第一個參數一個str的話,極有可能返回的是一個異常,說不在index中。 。。。。
坑爹。。。。
這個loc的用法不是根據某個位置內容篩選的含義,仍然是對行、對列的一種篩選。比如你某行的索引自己設置標簽啥的。。很讓人一頭霧水的設計。跟ix就是重復的。。。。
大多數情況下的應用場景就是還是用數字取行,用str取列。
比如loc[0:3,[“a”,”b”]]。取0到第3行(左閉右開,非整型值時左閉右閉。。。),”a”列與”b”列。
以上這篇基于DataFrame篩選數據與loc的用法詳解就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持武林站長站。
新聞熱點
疑難解答