pandas之查找数据

您所在的位置:网站首页 vba字段查找并返回列值 pandas之查找数据

pandas之查找数据

2024-01-08 15:03| 来源: 网络整理| 查看: 265

文章目录 一、简介二、按列查找数据2.1 查找一整列的数据2.1.1 df['列名']2.1.2 df.loc[:, '列名']2.1.3 df.iloc[:, 列的位置] 2.2 查找一列的部分数据2.2.1 df.loc['起始索引名':'终点索引名', '列名']2.2.2 df.iloc['起始索引位置':'终点索引位置', '列的位置'] 三、按行查找数据3.1 查找整行数据3.1.1 df['索引名']3.1.2 df['索引名'] 3.2 查找行的部分数据3.2.1 df.loc['索引名', '起始列名':'终点列名']3.2.2 df.iloc[索引位置, 起始列位置:终点列位置]

一、简介

 我们在这里简单介绍了创建Series、DataFrame的几种方式,本文主要介绍如何查找数据。

 由于Series数据结构较为简单,因此先主要介绍DataFrame数据结构的查找数据。

二、按列查找数据

 先介绍按列查找数据的方法。

2.1 查找一整列的数据 2.1.1 df[‘列名’]

 先创建一个DataFrame

data = {'name': ['apolo', 'adm', 'bolon', 'cathy'], 'age': [18, 29, 32, 28], 'sex': ['male', 'female', 'male', 'male']} df = pd.DataFrame(data) df

输出:

name age sex 0 apolo 18 male 1 adm 29 female 2 bolon 32 male 3 cathy 28 male

 知道要查找的列的列名的话,可以直接按照df[‘列名’]的方式直接查找:

df['age']

输出:返回的是一个Series对象,可以利用Series的属性或方法进行后续的操作

0 18 1 29 2 32 3 28 Name: age, dtype: int64

 查找多列的话,也可以用类似的方法——df[[‘列名1’, ‘列名2’, ……]],但要注意不能用df[‘列名1’, ‘列名2’, ……],否则会报错。

df[['age', 'sex']]

输出:此时输出的是一个DataFrame对象

age sex 0 18 male 1 29 female 2 32 male 3 28 male 2.1.2 df.loc[:, ‘列名’]

  其实这种方法更适合查找一列中的部分数据,即对行切片。

df.loc[:, 'age']

输出:是一个Series对象

0 18 1 29 2 32 3 28 Name: age, dtype: int64

  同样,这种方法也可以同时查找多列——df.loc[:, [‘列名1’, ‘列名2’, ……]]

df.loc[:, ['age', 'sex']]

输出:

age sex 0 18 male 1 29 female 2 32 male 3 28 male 2.1.3 df.iloc[:, 列的位置]

  这种方法和df.loc[:, ‘列名’]类似,区别在于这种方法需要传入要查找的列的位置,而不是列名。

df.iloc[:, 2]

输出:

0 male 1 female 2 male 3 male Name: sex, dtype: object

  同样,这种方法也可以同时查找多列——df.loc[:, [‘列的位置1’, ‘列的位置2’, ……]]

df.iloc[:, [0, 2]]

输出:

name sex 0 apolo male 1 adm female 2 bolon male 3 cathy male 2.2 查找一列的部分数据 2.2.1 df.loc[‘起始索引名’:‘终点索引名’, ‘列名’]

 先创建一个DataFrame

data = {'name': ['apolo', 'adm', 'bolon', 'cathy', 'devn', 'elov'], 'age': [18, 29, 32, 28, 34, 19], 'sex': ['male', 'female', 'male', 'male', 'male', 'female']} df = pd.DataFrame(data, index=['a', 'b', 'c', 'd', 'e','f']) df

输出:

name age sex a apolo 18 male b adm 29 female c bolon 32 male d cathy 28 male e devn 34 male f elov 19 female

 和查询整列的语法类似。

df.loc['a':'c', 'sex']

输出:需要注意的是,'a':'c'不能换为'c:'a',否则结果是空的,同样,也可以同时查询多列的部分,只需将'sex'换为['sex', 'age']即可。

a male b female c male Name: sex, dtype: object 2.2.2 df.iloc[‘起始索引位置’:‘终点索引位置’, ‘列的位置’]

 和查询整列的方法类似。

df.iloc[2:5, 1]

输出:同样,也不能调换起始索引和终点索引的位置,否则结果是空的。而要查询多列,也只需将1换为[0, 1]即可。

c 32 d 28 e 34 Name: age, dtype: int64 三、按行查找数据

 和查询列的方法类似,主要就是用df.loc[]和df.iloc[]

3.1 查找整行数据 3.1.1 df[‘索引名’]

 和查询整列的方法类似,但只传入待查找的行的索引名即可。

df.loc['c']

输出:此时输出的对象是一个Series对象,其索引为原df的列名。

name bolon age 32 sex male Name: c, dtype: object

 查找多行的语法类似,只需传入索引名组成的列表即可。

df.loc[['c', 'a']]

输出:最后输出的行的顺序和传入的列表中索引名的顺序一致。

name age sex c bolon 32 male a apolo 18 male 3.1.2 df[‘索引名’]

 和查询整列的方法类似,但只传入待查找的行的索引的位置即可。

df.iloc[3]

输出:此时输出的对象是一个Series对象,其索引为原df的列名。

name cathy age 28 sex male Name: d, dtype: object

 查找多行的语法类似,只需传入索引的位置组成的列表即可。

df.iloc[[5, 2]]

输出:最后输出的行的顺序和传入的列表中索引的位置的顺序一致。

name age sex f elov 19 female c bolon 32 male 3.2 查找行的部分数据

 和查找整行的数据类似。

3.2.1 df.loc[‘索引名’, ‘起始列名’:‘终点列名’] df.loc['c', 'name':'age']

输出:同样要注意,列名的顺序不能写反,否则会得到空结果。要想查找多个行的部分数据,也只需传入索引名组成的列表即可。

name bolon age 32 Name: c, dtype: object 3.2.2 df.iloc[索引位置, 起始列位置:终点列位置] df.iloc[4, 1:3]

输出:同样要注意,列的位置的顺序不能写反,否则会得到空结果。要想查找多个行的部分数据,也只需传入索引的位置组成的列表即可。

age 34 sex male Name: e, dtype: object


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3