详解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对网易云歌单数据分析及可视化

    以下是针对“使用Python对网易云歌单数据分析及可视化”的完整攻略: 1. 获取网易云歌单数据 要想进行数据分析及可视化,首先必须获取到歌单数据。网易云音乐提供了丰富的API,可以通过Python程序获取歌单数据。 具体操作步骤如下:1. 注册网易云开发者账号,获取开发者ID和Secret。2. 使用Python requests库的post方法发送HTT…

    python 2023年5月14日
    00
  • 计算Pandas数据框架的列数

    计算Pandas数据框架的列数可以通过shape属性来实现。shape属性返回一个元组,元组的第一个值为数据框架的行数,第二个值为数据框架的列数。 具体步骤如下: 导入pandas库并读取数据,生成一个数据框架对象。 import pandas as pd df = pd.read_csv(‘data.csv’) 调用shape属性,并打印结果。 print…

    python-answer 2023年3月27日
    00
  • pandas数据筛选和csv操作的实现方法

    下面是详细讲解“pandas数据筛选和csv操作的实现方法”的完整攻略。 一、pandas数据筛选 Pandas是一个强大的数据分析和处理库,其中有很多用于数据筛选的方法。 1. 根据某一列的条件筛选 使用 .loc 方法,可以通过某一列的条件进行数据筛选。例如,以下代码会选出某一列数据值大于5的所有行: import pandas as pd # 读取数据…

    python 2023年6月13日
    00
  • pyecharts动态轨迹图的实现示例

    下面详细讲解 “pyecharts动态轨迹图的实现示例” 的完整攻略,包括以下内容: 必要依赖的安装 实现动态轨迹图的方法 示例说明 必要依赖安装 “pyecharts动态轨迹图” 实现需要以下的依赖库: pyecharts pandas 可以通过以下命令进行安装: pip install pyecharts pandas 实现动态轨迹图的方法 实现动态轨迹…

    python 2023年5月14日
    00
  • python pandas 组内排序、单组排序、标号的实例

    下面我将详细讲解Python Pandas中的组内排序(GroupBy Sorting)、单组排序(Single Group Sorting)以及带标号的实例。 组内排序(GroupBy Sorting) 在Pandas数据里面,我们通常使用groupby分组方法来进行数据分析,其中包含DataFrame.groupby(根据某一列分组)、DataFrame…

    python 2023年5月14日
    00
  • pandas基础 Series与Dataframe与numpy对二进制文件输入输出

    pandas基础 什么是pandas? pandas是一个开源的python数据分析库,它提供了快速、灵活和富于表现力的数据结构来操作结构化数据。pandas被广泛用于数据处理、数据清洗、数据分析和数据可视化等领域。 pandas中的主要数据结构 pandas中的主要数据结构有两种:Series和DataFrame。 Series Series是一种一维的数…

    python 2023年5月14日
    00
  • 如何在Pandas中从另一个DataFrame中添加列

    在 Pandas 中,可以通过将另一个 DataFrame 的列合并到当前 DataFrame 中来添加列。通常使用 merge() 或 join() 方法来合并列。 下面是一个示例过程: 首先,我们创建两个 DataFrame,一个包含员工的姓名和 ID,另一个包含员工的工资和其他信息: import pandas as pd # 创建包含员工姓名和 ID…

    python-answer 2023年3月27日
    00
  • 在Pandas中把一系列的列表转换为一个系列

    在Pandas中,将一系列的列表转换为一个系列主要可以通过Series类的构造函数实现。Series类是Pandas中最常用的数据结构之一,它有三个主要的构造函数:Series(data, index, dtype),其中参数data表示要创建的Series数据,可以是一个列表、字典或NumPy数组等;参数index为Series数据的索引,即Series的…

    python-answer 2023年3月27日
    00
合作推广
合作推广
分享本页
返回顶部