# 文字版:
# -*- coding: utf-8 -*-
# 辅助函数:把月和日转化成小数格式,方便比较。比如六月三日就转化成6.3
def md2f(m,d):
return (m) + (d)*0.1
# 这个函数用来截取需要的时间段
def getDateRange(dates,startMonth,startDate,endMonth,endDate):
rangedDates = {} #先定义一个空字典,过会把符合要求的值都添进去
for k in dates.keys(): #用一个loop,把原本字典里所有的内容都检查一遍
y = int(k.split("/")[0]) #从“年/月/日“的格式里面提取出y=年、m=月、d=日
m = int(k.split("/")[1])
d = int(k.split("/")[2])
# 进行比较,如果月、日符合所给定的时间段,那就把这一项添到新字典里去
if md2f(startMonth,startDate) <md2f(m,d) <md2f(endMonth,endDate):
rangedDates[k] = dates[k]
return rangedDates # 返回新字典,这里面就是所有符合时间段的日期了。
sampleDates = {"1984/2/10":1,"1984/5/15":9,"1984/6/16":3,"1984/9/12":6,"1984/11/12":8,"1985/8/1":7}
print getDateRange(sampleDates,6,1,10,1) #调用函数,找到六月一号到十月一号之间的日期
loc中的数据是列名,是字符串,所以前后都要取;iloc中数据是int整型,所以是Python默认的前闭后开
构建数据集df
loc函数主要通过行标签索引行数据 ,划重点, 标签!标签!标签!
loc[1]选择行标签是1的(从0、1、2、3这几个行标签中)
loc[0:1] 和 loc[0,1]的区别,其实最重要的是loc[0:1]和iloc[0:1]
索引某一列数据,loc[:,0:1],还是标签,注意,如果列标签是个字符,比如'a',loc['a']是不行的,必须为loc[:,'a']。
但如果行标签是'a',选取这一行,用loc['a']是可以的。
iloc 主要是通过行号获取行数据,划重点,序号!序号!序号!
iloc[0:1],由于Python默认是前闭后开,所以,这个选择的只有第一行!
如果想用标签索引,如iloc['a'],就会报错,它只支持int型。
ix——结合前两种的混合索引,即可以是行序号,也可以是行标签。
如选择prize>10(prize为一个标签)的,即 df.loc[df.prize>10]
还有&并或等操作
python选取特定列——pandas的iloc和loc以及icol使用
pandas入门——loc与iloc函数
pandas中loc、iloc、ix的区别
pandas基础之按行取数(DataFrame)