如何在 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 中的索引列