python 如何在一个字典中截取其中的一段

Python031

python 如何在一个字典中截取其中的一段,第1张

# 文字版:

# -*- 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)