详解pandas DataFrame的查询方法(loc,iloc,at,iat,ix的用法和区别)

详解pandas DataFrame的查询方法(loc, iloc, at, iat, ix的用法和区别)

在pandas中,DataFrame是一个非常常用的数据结构。DataFrame支持多种查询方法,常见的有loc、iloc、at、iat和ix这几种方法。本文将详细讲解这几种查询方法的用法和区别。

loc (location的缩写)

loc方法是一种基于标签(row label和column label)的查询方法。它的语法如下:

DataFrame.loc[row_indexer,column_indexer]

其中,row_indexer和column_indexer均为一组标签,可以是单个标签,也可以是标签的列表、切片、布尔数组等。例如,如果我们要查询DataFrame df中第1行和第3行,并且只需要显示"姓名"和"分数"这两列的内容,我们可以使用以下代码:

df.loc[[1,3],["姓名","分数"]]

loc方法的一些常见用法:

  • 单个标签查询:DataFrame.loc[标签],例如DataFrame.loc[2]表示查询DataFrame中第3行的所有列;
  • 多个标签查询:DataFrame.loc[[标签1,标签2,...], :],例如DataFrame.loc[[1,2],:]表示查询DataFrame中第1行和第2行的所有列;
  • 切片查询:DataFrame.loc[起始标签:结束标签, :],例如DataFrame.loc[2:4,:]表示查询DataFrame中第3~第5行的所有列;
  • 布尔数组查询:DataFrame.loc[布尔数组, :],例如DataFrame.loc[df["性别"]=="男",:]表示查询DataFrame中所有“性别”为“男”的行的所有列。

iloc(integer location的缩写)

iloc方法是一种基于位置的查询方法。它的语法如下:

DataFrame.iloc[row_indexer,column_indexer]

其中,row_indexer和column_indexer均为一组整数,可以是单个整数,也可以是整数的列表、切片、布尔数组等。例如,如果我们要查询DataFrame df中第1行和第3行,并且只需要显示"姓名"和"分数"这两列的内容,我们可以使用以下代码:

df.iloc[[0,2],[0,3]]

iloc方法的一些常见用法:

  • 单个整数查询:DataFrame.iloc[整数],例如DataFrame.iloc[2]表示查询DataFrame中第3行的所有列;
  • 多个整数查询:DataFrame.iloc[[整数1,整数2,...], :],例如DataFrame.iloc[[0,1],:]表示查询DataFrame中第1行和第2行的所有列;
  • 切片查询:DataFrame.iloc[起始整数:结束整数, :],例如DataFrame.iloc[2:4,:]表示查询DataFrame中第3~第5行的所有列;
  • 布尔数组查询:DataFrame.iloc[布尔数组, :],例如DataFrame.iloc[df["性别"]=="男",:]表示查询DataFrame中所有“性别”为“男”的行的所有列。

at

at方法是一种查询单个元素的方法,它的语法如下:

DataFrame.at[row_indexer,column_indexer]

其中,row_indexer和column_indexer均为单个标签,因此at方法只能用于查询单个元素。例如,如果我们要查询DataFrame df中第3行、第4列的元素,我们可以使用以下代码:

df.at[2,"分数"]

iat

iat方法是一种查询单个元素的方法,它的语法如下:

DataFrame.iloc[row_indexer,column_indexer]

其中,row_indexer和column_indexer均为单个整数,因此iat方法只能用于查询单个元素。例如,如果我们要查询DataFrame df中第2行、第3列的元素,我们可以使用以下代码:

df.iat[1,2]

ix

在pandas 0.20.0以上的版本中,ix方法已被弃用。如果要同时使用标签和位置进行查询,可以使用loc和iloc方法,并使用显式的“标签”或“位置”前缀来指示要使用的搜索方法。例如,以下代码与ix方法的效果相同:

df.loc[df.index[1:3], ["姓名","分数"]]
df.iloc[1:3,0:2]

示例说明

为了更好地理解这些方法的用法,我们将使用以下DataFrame df进行演示。df表示3名学生的学习情况,包括“姓名”、“性别”、“分数”三列数据。

df = pd.DataFrame({'姓名': ['张三', '李四', '王五'], '性别': ['男', '男', '女'], '分数': [80, 90, 85]})

示例1:

查询df中“姓名”为“李四”和“王五”的行信息(包含数据的所有列)。

df.loc[df["姓名"].isin(["李四","王五"]),:]
df.iloc[[1,2],:]

以上两种方法都可以实现相同的效果。在这种情况下,我们可以看出loc方法和iloc方法的查询方法基本一致。

示例2:

查询df中“姓名”为“张三”的学生成绩。

df.loc[df["姓名"]=="张三","分数"].values[0]
df.at[0,"分数"]

以上两种方法都可以实现相同的效果。可以看出,我们无法只使用loc方法查询单个元素,而at方法则可以直接查询。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:详解pandas DataFrame的查询方法(loc,iloc,at,iat,ix的用法和区别) - Python技术站

(0)
上一篇 2023年5月14日
下一篇 2023年5月14日

相关文章

  • 如何在Python中把Sklearn数据集转换成Pandas数据框

    将sklearn数据集转换成pandas数据框的过程相对简单,可以按照以下步骤进行: 导入所需的库和数据集 from sklearn import datasets import pandas as pd 在此示例中,我们使用iris数据集。 iris = datasets.load_iris() 创建数据框 将用于创建数据框的数据分离出来,并建立一个列表。…

    python-answer 2023年3月27日
    00
  • 使用Python Pandas和Flask框架将CSV转换成HTML表

    请看下面的详细讲解。 准备工作 在实现这个功能之前,我们需要准备好以下工具和环境: Python环境和Pandas库; Flask框架; CSV文件。 确保你的电脑上已经安装了Python环境。如果还没有安装,可以去官网下载:https://www.python.org/downloads/。 然后,可以通过pip安装Pandas和Flask库,在终端或命令…

    python-answer 2023年3月27日
    00
  • Python实现csv文件(点表和线表)转换为shapefile文件的方法

    让我来为你详细讲解“Python实现csv文件(点表和线表)转换为shapefile文件的方法”的完整攻略。 1. 背景介绍 在进行地理信息数据处理时,我们通常会遇到需要将csv文件转换为shapefile文件的情况,尤其是点表和线表数据。Python是一种非常强大的编程语言,可以用它来实现这个转换过程。 2. 实现步骤 2.1 安装所需的Python库 在…

    python 2023年5月14日
    00
  • Pandas 执行类似SQL操作的4种方法

    Pandas是数据处理中不可或缺的工具之一,除了数据的读写、清洗、转换等基本操作,Pandas还支持一些类似SQL的操作,而这些操作对于熟悉SQL的用户来说,极大地方便了数据的操作和分析。 Pandas提供的SQL类操作主要包括以下几种方法: merge: 将两个DataFrame按照指定的列进行合并(类似于SQL中的join操作)。 groupby: 对D…

    Pandas 2023年3月7日
    00
  • 在Python Pandas中改变数字大小

    下面是在Python Pandas中改变数字大小的完整攻略,包含以下内容: 1.使用apply()方法改变数字大小2.使用map()方法改变数字大小3.使用lambda表达式改变数字大小4.使用astype()方法改变数据类型 1.使用apply()方法改变数字大小apply()方法可以对一个数据框中的某一列或多列数据进行操作,比如,当我们需要改变某一列数据…

    python-answer 2023年3月27日
    00
  • pandas分批读取大数据集教程

    下面是“pandas分批读取大数据集教程”的完整攻略: 1. 背景介绍 当我们需要处理较大的数据集时,直接将整个数据集读入内存中会导致程序崩溃或内存溢出。为了解决这个问题,我们需要分批读取数据集,将其分割成若干个小批次进行处理。pandas提供了多种方法实现分批读取大数据集,下面介绍其中两种。 2. 实现方法 2.1 方法一:使用chunksize参数 pa…

    python 2023年5月14日
    00
  • 如何在Pandas中删除包含特定值的行

    在Pandas中删除包含特定值的行有多种方法,下面一一介绍。 1. 使用布尔索引 通过使用布尔索引,可以选择符合条件的行进行删除。 例如,有如下的DataFrame: import pandas as pd df = pd.DataFrame({‘A’: [1, 2, 3, 4, 5], ‘B’: [‘a’, ‘b’, ‘c’, ‘d’, ‘e’]}) df…

    python-answer 2023年3月27日
    00
  • 使用Python构造hive insert语句说明

    下面是使用Python构造Hive INSERT语句的详细攻略。 1. 概述 Hive是基于Hadoop的数据仓库系统,用户可以使用Hive SQL语言对Hadoop中的数据进行查询和分析。Hive支持INSERT语句将数据插入到Hive表中,同时,我们也可以使用Python来构造Hive INSERT语句,从而更加灵活地操作Hive表。 2. Hive I…

    python 2023年5月14日
    00
合作推广
合作推广
分享本页
返回顶部