如何在 pandas dataframe 中按索引选择行


通常,您可能希望根据索引值在 pandas DataFrame 中选择行。

如果要根据整数索引选择行,可以使用.iloc函数。

如果要根据标签索引选择行,可以使用.loc函数。

本教程提供了如何在实践中使用每个函数的示例。

示例 1:根据整数索引选择行

以下代码显示如何创建 pandas DataFrame 并使用.iloc选择整数索引值为4的行:

 import pandas as pd
import numpy as np

#make this example reproducible
n.p. random . seeds (0)

#createDataFrame
df = pd. DataFrame ( np.random.rand (6,2),index=range(0,18,3),columns=[' A ' ,' B '])

#view DataFrame
df

	       A B
0 0.548814 0.715189
3 0.602763 0.544883
6 0.423655 0.645894
9 0.437587 0.891773
12 0.963663 0.383442
15 0.791725 0.528895

#select the 5th row of the DataFrame
df. iloc [[4]]

	       A B
12 0.963663 0.383442

我们可以使用类似的语法来选择多行:

 #select the 3rd, 4th, and 5th rows of the DataFrame
df. iloc [[2, 3, 4]]

	       A B
6 0.423655 0.645894
9 0.437587 0.891773
12 0.963663 0.383442

或者我们可以选择一个范围内的所有行:

 #select the 3rd, 4th, and 5th rows of the DataFrame
df. iloc [2:5]

	       A B
6 0.423655 0.645894
9 0.437587 0.891773
12 0.963663 0.383442

示例 2:根据标签索引选择行

以下代码显示如何创建 pandas DataFrame 并使用.loc选择索引标签为3的行:

 import pandas as pd
import numpy as np

#make this example reproducible
n.p. random . seeds (0)

#createDataFrame
df = pd. DataFrame ( np.random.rand (6,2),index=range(0,18,3),columns=[' A ' ,' B '])

#view DataFrame
df

	       A B
0 0.548814 0.715189
3 0.602763 0.544883
6 0.423655 0.645894
9 0.437587 0.891773
12 0.963663 0.383442
15 0.791725 0.528895

#select the row with index label '3'
df. loc [[3]]

               A B
3 0.602763 0.544883

我们可以使用类似的语法来选择具有不同索引标签的多行:

 #select the rows with index labels '3', '6', and '9'
df. loc [[3, 6, 9]]

	       A B
3 0.602763 0.544883
6 0.423655 0.645894
9 0.437587 0.891773

.iloc 和 .loc 之间的区别

上面的示例说明了.iloc.loc之间的细微差别:

  • .iloc根据整数索引选择行。因此,如果您想选择 DataFrame 的第 5 行,则可以使用 df.iloc[[4]],因为第一行位于索引 0,第二行位于索引 1,依此类推。
  • .loc根据标记索引选择行。所以,如果你想选择索引标签为5的行,你将直接使用df.loc[[5]]。

其他资源

如何获取 Pandas DataFrame 中的行号
如何删除 Pandas 中包含 NaN 值的行
如何删除 Pandas 中的索引列

添加评论

您的电子邮箱地址不会被公开。 必填项已用*标注