使用pandas对数据进行筛选,pandas 筛选条件

  使用pandas对数据进行筛选,pandas 筛选条件

  在数据分析过程中,通常需要对数据进行清洗和处理,比较重要和常见的操作是对数据进行过滤和查询。下面文章主要介绍python使用pandas实现过滤功能的方式的相关信息。有需要的可以参考一下。

  00-1010 1.选定的数据行2。选择某一列中具有某一值的所有数据记录3。模式匹配4。范围区间值筛选5。获得了某行某列的某个值6。获得了原始的numpy二维数组7。根据条件8获得某一行元素的位置。过滤元素9的位置。删除了多个行/列10 to_datetime将字符串格式转换为日期格式11 apply()函数12 map()函数参考摘要

  

目录

  data=df.loc[2:5]

  # [2:5]这里表示第3行到第5行的内容,[]的第一个开始为0,表示第一行数据。

  

1 筛选出数据的指定几行数据

  Data=df[(df[列名1]=列值1)]

  #当多个条件匹配时

  Data_many=df[(df[列名1]=列值1)(df[列名2]=列值2)]

  #多值匹配时

  Data_many=df[df[列名1] in [值1 ,值2 ,]]

  

2 筛选出数据某列为某值的所有数据记录

  #开头有值的模式匹配

  Cond=df[列名].str.startswith(值)

  $中间有值的模式匹配

  Cond=df[列名].str.contains(值)

  

3 模式匹配

  #基于以下两个值过滤数据:

  Cond=df[(df[列名1]列值1)(df[列名1]列值2)]

  

4 范围区间值筛选

  print(rider ship _ df . loc[ 05-05-11 , R003])

  #或者

  print(ridership_df.iloc[4,0])

  #结果3360

  1608

  

5 获取某一行某一列的某个值

  打印(df.values)

  

6 获取原始的numpy二维数组

  进口熊猫作为pd

  df=pd。DataFrame({BoolCol: [1,2,3,3,4], attr: [22,33,22,44,66]},index=[10,20,30,40,50])

  打印(df)

  a=df[(df。BoolCol==3)(df . attr==22)]. index . to list()

  b=df[(df。BoolCol==3)(df.attr==22)]。索引[0]

  c=df[(df。BoolCol==3)(df . attr==22)]. index . values

  打印(一份)

  

7 根据条件得到某行元素所在的位置

  Print(date_frame) #打印全显示的效果

  Print(date_frame.shape) #获取df的行数和列数

  Print(date_frame.head(2)) #前两行

  打印后2行(date_frame.tail(2)) #

  print(date _ frame . index . to list())#只获取df的索引列表

  print(date _ frame . columns . to list())#只获取df的列名列表

  print(date _ frame . values . to list())#仅获取df的位置

  有值的列表(二维列表)

  

  

9. 删除多行/多列

  

# 使用的前提是,dataframe的index和columns用的是数字,利用了drop()和range()函数。

  DataFrame.drop(labels=None, axis=0, index=None, columns=None, level=None, inplace=False, errors=raise)

  # axis = 0,表示删除行; axis = 1 表示删除列。

  # 想删除多行/列,用range即可,比如要删除前3行,drop(range(0,3),axis = 0(默认为零,可不写))即可。

  

  

  

10 to_datetime将字符串格式转化为日期格式

  

import datetime

  import pandas as pd

  dictDate = {date: [2019-11-01 19:30, 2019-11-30 19:00]}

  df = pd.DataFrame(dictDate)

  df[datetime] = pd.to_datetime(df[date])

  df[today] = df[datetime].apply(lambda x: x.strftime(%Y%m%d))

  df[tomorrow] = (df[datetime] + datetime.timedelta(days=1)).dt.strftime(%Y%m%d)

  

  

  

11 apply() 函数

  

# pandas 的 apply() 函数可以作用于 Series 或者整个 DataFrame,功能也是自动遍历整个 Series 或者 DataFrame, 对每一个元素运行指定的函数。

  def add_extra(nationality, extra):

   if nationality != "汉":

   return extra

   else:

   return 0

  df[ExtraScore] = df.Nationality.apply(add_extra, args=(5,))

  df[ExtraScore] = df.Nationality.apply(add_extra, extra=5)

  df[Extra] = df.Nationality.apply(lambda n, extra : extra if n == 汉 else 0, args=(5,))

  def add_extra2(nationaltiy, **kwargs):

   return kwargs[nationaltiy]

  df[Extra] = df.Nationality.apply(add_extra2, 汉=0, 回=10, 藏=5)

  

  

  

12 map() 函数

  

import datetime

  import pandas as pd

  def f(x):

   x = str(x)[:8]

   if x !=n:

   gf = datetime.datetime.strptime(x, "%Y%m%d")

   x = gf.strftime("%Y-%m-%d")

   return x

  def f2(x):

   if str(x) not in [ , nan]:

   dd = datetime.datetime.strptime(str(x), "%Y/%m/%d")

   x = dd.strftime("%Y-%m-%d")

   return x

  def test():

   df = pd.DataFrame()

   df1 = pd.read_csv("600694_gf.csv")

   df2=pd.read_csv("600694.csv")

   df[date1] =df2[DateTime].map(f2)

   df[date2] =df1[date].map(f)

   df.to_csv(map.csv)

  

  

  

参考

  

  • Pandas之DataFrame操作
  • pandas.DataFrame.drop — pandas 1.4.1 documentation
  • pandas apply() 函数用法
  • pandas.Series.apply — pandas 1.4.1 documentation

  

  

总结

  到此这篇关于python使用pandas实现筛选功能方式的文章就介绍到这了,更多相关pandas筛选功能内容请搜索盛行IT软件开发工作室以前的文章或继续浏览下面的相关文章希望大家以后多多支持盛行IT软件开发工作室!

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: