python dataframe 筛选符合条件的一行,pandas 条件筛选行
Python部落(python.freelycode.com)组织翻译。禁止转载。欢迎转发。
在本文中,我们将使用iloc和loc来处理数据。更具体地说,我们将通过iloc和loc示例了解切片和索引。
一旦我们将数据集作为Pandas dataframe加载,我们通常希望根据特定条件开始访问数据的特定部分。例如,如果我们的数据集包含比较不同实验组的实验结果,我们可能需要分别计算每个实验组的描述性统计数据。
有关对熊猫数据帧进行分组的更多信息
如何用Python做描述性统计
根据特定标准选择特定数据行和列的过程通常称为切片。
熊猫数据框
在我们学习如何使用loc和iloc之前,我们最好了解一下Pandas dataframe对象是如何工作的。对于本索引和切片教程的特定目的,我们最好知道dataframe中的每一行和每一列都有一个数字——和一个索引。
这个结构是带有数字索引的行列结构,这意味着我们可以使用行号和列号来处理数据。当我们准备使用Pandas loc和iloc方法时,这非常有用。
请参考博文《使用Pandas和pyjanitor——了解一些简单的Python数据清理方法》。
数据
在以下iloc和loc示例中,我们将使用两个数据集。这些数据集以及许多其他RDataset都可以在这里找到,但是下面的代码将把它们加载到Pandas dataframe中:
如果您有兴趣了解关于Pandas数据处理的更多信息,请查看以下文章:
如何将CSV文件读入熊猫
如何将Excel文件读入熊猫
将SPSS文件读入熊猫
用Python和Pandas处理JSON文件
loc和iloc有什么区别?
在继续使用Pandas iloc和Pandas loc之前,我们先来回答一下loc和iloc的区别。
首先,loc是基于标签的方法,而。iloc是一种基于整数的方法。这意味着当我们对数据帧进行切片时,loc将考虑索引的名称或标签。
Pandasoc示例链接
例如,如果“case”在dataframe的索引中(例如df),df.loc[case]将导致选择第三行。请注意,在下面的loc和iloc示例中,我们将使用数据集中的第一列作为索引(参见第一个代码块)。
另一方面,熊猫。iloc将根据索引的位置进行切片。不像。loc,iloc的行为类似于常规的Python切片。也就是说,我们只需要指定位置索引号,就会得到想要的切片。
例如,df.iloc[2]将为我们提供dataframe的第三行。这是因为,就像在Python中一样。iloc基于0位置,即从0开始。在下面的文章中,我们将学习如何使用loc和iloc。
iloc在熊猫方面能做什么?
如前所述,熊猫iloc主要以整数仓位为主。也就是说,您可以使用0到length -1来索引数据帧,无论它是行索引还是列索引。
此外,正如我们将在后面的Pandas iloc示例中看到的,这个方法也可以用于布尔数组。
在本Pandas iloc教程中,我们将使用以下输入法:
整数,如2。
整数列表,如[7,2,0]
带有整数的slice对象,比如0:7,如上图所示。
布尔数组。
如何使用熊猫iloc
现在您可能想知道“如何使用iloc?”当然,我们会回答这个问题。在最简单的形式中,我们只需要在括号中键入一个整数。
正如您在上面的Pandas iloc示例中看到的,我们在iloc方法后面键入了一组方括号。
此外,我们添加了一个整数(0)作为索引值,以表明我们想要获取数据帧的第一行。注意,使用时。iloc,要知道方括号内的索引顺序显然很重要。
第一个索引号将是我们要检索的行。如果我们想使用iloc检索一个特定的列或一些特定的列,我们将输入第二个索引(或多个索引)。但是,这是可选的,当没有第二个索引时,iloc将默认检索所有列。
如前所述,Pandas iloc语法为:DataFrame.iloc[,]。
这可能会使R统计编程环境的用户感到困惑。为了进行迭代,我们可以在Pandas中使用iloc方法,按照行和列在数据帧中出现的顺序按数字顺序选择它们。
熊猫iloc示例
在下一节中,我们将通过查看如何使用iloc的不同示例来继续这个Pandas索引和切片教程。当然,我们已经从最基本的方法开始;也就是说,选择单行:
索引熊猫数据帧的最后一行。
在下一个示例中,我们将继续使用整数来索引数据帧。然而,如果我们想要检索熊猫数据帧的最后一行,我们使用“-1”:
当我们使用iloc时,我们也可以输入一个只有一个索引整数的列表。这将对一行进行索引,但输出将不同于上面的示例:
使用iloc选择多行
当然,我们也可以使用iloc从pandas数据帧中选择许多行。例如,如果我们向列表中添加更多的索引整数,就像上面的例子一样,我们可以选择许多行。
在Pandas中使用iloc切片行
在下一个Pandas iloc示例中,我们将学习切片。请注意,稍后我们将更熟悉使用切片字符“:”。要选择第11至15行,我们只需输入以下代码:
使用Pandas iloc选择列
当然,如前所述,当在iloc方法中使用第二个参数时,我们也可以选择或分割列。在下一个iloc示例中,我们可能只想检索数据帧中的第一列,即索引位置为0的列。
因此,在使用iloc时,我们将在括号中的第二个位置使用整数索引值。注意,第二个位置的整数索引指定了我们要检索的列。好吧,那又怎样?
请注意,当我们想要使用iloc选择所有行和一列(或多列)时,我们需要使用“:”字符。
在上面的Pandas iloc示例中,我们在括号中的第一个位置使用了“:”字符。这表明我们想要检索所有行。提醒一下,[]中的第一个索引位置用于指定行,我们使用“:”字符,因为我们想从Pandas数据帧中获取所有行。
在下一个关于如何使用Pandas iloc的例子中,我们将获得一些列和所有行的切片。这可以通过与上述类似的方式来完成。但是,我们没有使用整数,而是使用Python切片来获取所有行和前6列:
使用iloc选择特定单元。
在Pandas iloc教程的这一部分,我们将学习如何选择特定的单元。
当然,这很简单。我们只需要对想要从数据帧中获取的行和列使用整数索引值。例如,如果我们想要选择第0行和第0列中的数据,我们只需要键入df1.iloc[0,0]。
当然,我们也可以选择多行和/或多列。为此,我们只需添加一个列表,其中包含我们希望iloc为我们选择的整数索引。
例如,如果我们想要选择第4行、第2、第3和第4列中的数据,我们只需要使用下面的代码:
检索单元格的子集
在下一个iloc示例中,我们将从dataframe的单元中获取一个子集。
为了实现这一点,我们需要使用iloc来获得一个列片和一个行片的组合:
使用布尔掩码选择列。
在最后一个例子中,我们将使用一个布尔掩码来选择列。当然,要做到这一点,我们需要知道有多少列,以及我们想要选择哪些列。
如何使用熊猫loc
在本节中,我们将介绍另一个Pandas方法,即loc,它用于从dataframe中选择数据。
何时使用loc?
记住,iloc使用位置引用作为参数输入,而loc使用索引作为参数。由于loc接受索引,我们可以将一个字符串(例如列名)作为参数传递,而如果我们在iloc中使用一个字符串,它将抛出一个错误。所以,什么时候用熊猫loc?答案是当我们知道索引名的时候。
在本loc教程中,我们将使用以下输入:
单个标签,如2或“b”。
值得注意的是,熊猫会把2解释为一个索引的标签,而不是索引上的整数位置(与iloc相反)。
标签列表,例如[a , B ,c] B ,c]
带有标签的切片对象,如“短名称”:“sasname”。重要的是,当谈到切片时,当我们使用loc时,开始和停止位置都包括在内。
使用Pandas loc选择一行。
在第一个Pandas loc示例中,我们将从索引为1的行中选择数据。
请注意,在上面的示例中,第一行的名称是“1”。也就是说,这个“1”不是索引整数,而是行的名称。
Pandas loc的行为方式与iloc相同,我们的单个行作为系列被检索。与Pandas iloc一样,我们可以更改输出以获得带有数据帧的单行。我们通过将行名放在一个列表中来实现这一点:
使用loc对行进行切片。
在下一个代码示例中,我们将使用行名来获取行切片。
我们也可以给它传递一个索引列表来选择需要的索引。
使用loc按列名选择。
与Pandas iloc不同,loc进一步将列名作为列参数。这意味着我们可以向它传递一个列名,以便从该列中选择数据。
在下一个loc示例中,我们将从“SASname”列中选择所有数据。
当然,另一种选择是在使用loc时将多个列名传递到一个列表中。在下一个示例中,我们将从“SASname”和“longname”列中选择数据,其中行名从1到5。
熊猫肉片
在这一节中,我们将看到如何使用loc分割熊猫数据帧。记住,切片时使用“:”字符。像iloc一样,我们可以切片,只是这里我们可以使用列名和行名(如下例所示)。
在下面的loc示例中,我们再次使用第一个数据帧(即df1),对前5行进行切片,并获取从“Film”列到“EA1”列的所有列。
Pandiloc和条件
很多时候,我们希望通过使用布尔数组来索引熊猫数据帧。也就是说,我们可能希望根据某些条件来选择数据。当然,这很容易用熊猫loc实现。我们只需要将包含真/假值的数组或序列传递给。锁定方法。
例如,如果我们希望选择研究列中所有值为“flat”的行,我们将按照以下步骤创建一个Pandas系列,其中dataframe中的每一行都有一个true值,其中存在“flat”。
使用多条件Pandas iloc选择行
此外,有时我们可能希望基于多个条件做出选择。例如,如果我们希望选择所有研究列为“平面”且neur列大于18的行,我们可以根据下例进行选择:
和前面一样,我们可以使用第二个参数从dataframe中选择一个特定的列。记住,当使用Pandas loc时,loc索引器通过名称引用列。我们可以使用单个字符串、列列表或切片“:”操作。在下一个示例中,我们将选择从EA1到NA2的列:
使用。loc设置数据帧中的值。
在本loc和iloc教程的最后一节,我们将学习如何使用loc来设置dataframe的值。
为数据帧设置一个值非常简单。我们需要做的只是稍微改变一下语法,实际上我们可以在同一个语句中更新数据。位置索引器。这很方便,因为我们可以根据不同的条件更新列中的值。
在最后一个loc示例中,我们将创建一个新列(NewCol ),并将单词“BIG”添加到neur大于18的行中:
结论
在这个Pandas iloc和loc教程中,我们学习了使用loc和iloc方法来构建索引、选择数据和选择子集。更具体地说,我们已经了解了这些方法是如何工作的。说到loc,我们已经学会了如何根据条件语句(比如大于等于)选择数据,以及如何使用loc设置值。原文英文:3359 www . mars ja . se/how-to-use-iloc-and-loc-for-indexing-and-slicing-pandas-data frames/
翻译:测试
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。