
Pandas DataFrame属性如iloc和loc有助于从DataFrame中选择行。有多种方法来选择和索引DataFrame的行。我们也可以根据指定的条件从pandas DataFrame中选择行。逻辑选择和布尔系列也可以传递给pandas DataFrame的通用[]索引器,并给出同样的结果。
潘达斯选择行
要在Python中选择 pandas 数据框架的行,可以使用iloc 属性。Pandas Dataframe的iloc索引器用于基于整数位置的索引/按位置选择。
Pandas DataFrame是一个二维标记的数据结构,具有潜在的不同类型的列。你可以把它看作是一个电子表格、SQL 表 ,或者是一个系列对象的dict。
它通常是最常用的pandas对象。和Series一样,DataFrame接受许多不同类型的输入。
从潘达斯数据框架中选择行的步骤
步骤1:数据设置
Pandas read_csv()是一个内置的函数,用于从CSV文件中导入数据,并在Python中分析这些数据。所以,我们将从CSV文件中导入数据集,它将被自动转换为Pandas DataFrame,然后从DataFrame中选择数据。
我们项目的数据集在这里:
上述数据集有18行和5列。
第二步:导入CSV数据
将该文件放在我们的项目文件夹中,并与我们的python编程文件app.py放在同一目录下。然后, 在app.py 文件中写下 以下代码。
# app.py
import pandas as pd
df = pd.read_csv('people.csv')
print(df)
输出
python3 app.py
Name Sex Age Height Weight
0 Alex M 41 74 170
1 Bert M 42 68 166
2 Carl M 32 70 155
3 Dave M 39 72 167
4 Elly F 30 66 124
5 Fran F 33 66 115
6 Gwen F 26 64 121
7 Hank M 30 71 158
8 Ivan M 53 72 175
9 Jake M 32 69 143
10 Kate F 47 69 139
11 Luke M 34 72 163
12 Myra F 23 62 98
13 Neil M 36 75 160
14 Omar M 38 70 145
15 Page F 31 67 135
16 Quin M 29 71 176
17 Ruth F 28 65 131
所以,我们的DataFrame已经准备好了。read_csv()函数在导入完成后自动将CSV数据转换为DataFrame。然后,我们 可以使用**Python type()** 函数检查数据类型。
# app.py
import pandas as pd
df = pd.read_csv('people.csv')
print(type(df))
输出
python3 app.py
<class 'pandas.core.frame.DataFrame'>
步骤3:从Pandas DataFrame中选择行
使用iloc属性选择pandas行
Pandas.DataFrame.iloc是一个独特的内置方法,可以返回基于整数位置的索引,用于按位置选择。 iloc索引器的语法如下。
df.iloc[<row selection>, <column selection>]
这肯定会让R用户感到困惑。
pandas中的 "iloc " 是用来 按照行和列 在DataFrame中出现的顺序,按编号选择的。
如果我们传递df.iloc[6, 0],这意味着第6个索引行(行索引从0开始)和第0列,也就是名字。
所以,输出将根据我们的DataFrame是Gwen。所以,让我们以编程方式打印这个。
请看下面的代码。
# app.py
import pandas as pd
df = pd.read_csv('people.csv')
print(df.iloc[6, 0])
输出
python3 app.py
Gwen
你可以想象,每一行都有一个从0到总行的行号(data.shape[0]),而iloc[]允许根据这些数字进行选择。这同样适用于所有的列(范围从0到data.shape[1])。
在上面的例子中,我们选择了一个特定的DataFrame值,但是我们也可以使用iloc选择DataFrame中的行。请看下面的代码。
# app.py
import pandas as pd
df = pd.read_csv('people.csv')
print(df.iloc[4])
输出
python3 app.py
Name Elly
Sex F
Age 30
Height 66
Weight 124
Name: 4, dtype: object
所以,我们已经使用DataFrame的iloc[]属性选择了一个单行。
如果我们给iloc[]属性传递负值,它将给我们DataFrame的最后一行。
# app.py
import pandas as pd
df = pd.read_csv('people.csv')
print(df.iloc[-1])
输出
python3 app.py
Name Ruth
Sex F
Age 28
Height 65
Weight 131
Name: 17, dtype: object
使用loc属性选择pandas行
Pandas DataFrame loc属性通过标签或布尔数组访问一组行和列。
DataFrame.loc[]主要是基于标签,但也可以使用布尔数组。
允许的输入有以下几种:
- 一个单一的标签,例如,5或'a',(注意,5被解释为索引的一个标签,而不是与索引一起的整数位置)。
- 一个标签的列表或数组,例如:['a', 'b', 'c']。
- 一个带有标签的切片对象,例如:'a':'f'。
- 一个与被切片的轴相同长度的布尔数组,例如,[True, False, True]。
- 一个有一个参数(调用系列或数据框架)的可调用函数,返回用于索引的有效输出(上述之一)。
现在,在我们的例子中,我们还没有设置一个索引。我们可以使用Pandas的set_index()函数来设置索引。我们正在设置Name 列作为我们的索引。
请看下面的代码。
# app.py
import pandas as pd
df = pd.read_csv('people.csv')
df.set_index("Name", inplace=True)
现在,我们可以从DataFrame的Name列中选择任何标签,以获得该特定标签的行。
比方说,我们需要选择带有标签 "Gwen"的行**。**
请看下面的代码。
# app.py
import pandas as pd
df = pd.read_csv('people.csv')
df.set_index("Name", inplace=True)
print(df.loc['Gwen'])
输出
python3 app.py
Sex F
Age 26
Height 64
Weight 121
Name: Gwen, dtype: object
在Pandas中选择DataFrame的多条记录
Pandas的DataFrame loc[]属性被用来选择DataFrame的多行。
让我们坚持上面的例子,多加一个叫做Page 的标签**,** 并选择多行。
所以,我们是根据Gwen 和Page 标签来选择行。
为了选择多行,我们必须将标签列表传递给loc[]属性。
请看下面的代码。
# app.py
import pandas as pd
df = pd.read_csv('people.csv')
df.set_index("Name", inplace=True)
print(df.loc[['Gwen', 'Page']])
输出
python3 app.py
Sex Age Height Weight
Name
Gwen F 26 64 121
Page F 31 67 135
使用.loc的布尔型/逻辑型索引
使用**data.loc[]**的布尔数组进行条件选择是我在Pandas DataFrames中使用的标准方法。
使用布尔索引或逻辑选择,你将一个数组或真/假值系列传递给.loc索引器,以选择你的系列有真值的行。
请看下面的代码。
# app.py
import pandas as pd
df = pd.read_csv('people.csv')
print(df.loc[df['Name'] == 'Bert'])
输出
python3 app.py
Name Sex Age Height Weight
1 Bert M 42 68 166
在上面的例子中,语句df['Name'] == 'Bert'] 产生了一个Pandas系列,在'df'数据框架的每一行都有一个True/False值,其中名字为 "**Bert "**的行有 "True "值。
使用布尔值True/False系列来选择pandas数据框中的行--所有名字为 "**Bert "**的行都被选中。
Python Pandas:基于条件选择行
让我们选择所有年龄等于或大于40的行。
请看下面的代码。
# app.py
import pandas as pd
df = pd.read_csv('people.csv')
print(df.loc[df['Age'] > 40])
输出
python3 app.py
Name Sex Age Height Weight
0 Alex M 41 74 170
1 Bert M 42 68 166
8 Ivan M 53 72 175
10 Kate F 47 69 139
选择身高小于65,体重大于160的行
请看下面的代码。
# app.py
import pandas as pd
df = pd.read_csv('people.csv')
op = df.loc[(df['Height'] > 70) & (df['Weight'] > 160)]
print(op)
输出结果
python3 app.py
Name Sex Age Height Weight
0 Alex M 41 74 170
3 Dave M 39 72 167
8 Ivan M 53 72 175
11 Luke M 34 72 163
16 Quin M 29 71 176
总结
Pandas DataFrame提供了许多属性,如loc和iloc,对选择行很有用。在本教程中,我们已经看到了各种布尔条件来选择DataFrame的行、列和特定值。
本教程到此结束。
