本文介绍: 参考书籍在线链接利用 Python 进行数据分析 · 第 2 版当你看完1-5的内容再来看这个表,用于以后的查询切片时,loc包含端点,左闭右闭;iloc包含结束点,左闭右开“:”表示行(列)切片的意思,行开始点:行结束点。当只获取行的时候,列可以省略当只获取列的时候,行不能省略可以写作loc[ : , 列索引],意思是所有行都选中 year state pop debt

Pandas行和列的获取

由于平时没有系统学习pandas,导致在实际应用过程中,对于获取df中的行和列经常出现问题,于是总结一下,供自己以后参考

参考书籍在线链接利用 Python行数分析 · 第 2 版

0 查看手册

请当你看完1-5的内容再来看该部分用于理解和以后的查询

功能
获取列 df.loc[: , 列名序列] df.iloc[ : , 列索引序列] df[列名序列]
获取行 df.loc[行名序列] df.iloc[ 行索引序列] df[行名:列名]
获取行和列1 df.loc[行名序列,列名序列] df.iloc[ 行索引序列,列索引序列]
获取行和列2 df.loc[行名开始:行名结束,列名开始:列名结束] df.iloc[行索引开始:行索引结束,列索引开始:列索引结束]
序列的含义

列名或者行名(列索引,行索引)组成的列表;

  1. 比如获取多列(行), 方法为:df[['col1','col2']]
  2. 当只获取一个列(行)的时候可以直接填写df['col1']

切片的含义

类似于列表切片,开始:结束pandas会获取开始->结束之间的行(列)

  1. 切片时,loc包含端点,左闭右闭;iloc包含结束点,左闭右开

  2. “:”表示行(列)切片的意思,行开始点:行结束点。

loc用法

loc[行序列,列序列]分别表示获取指定的行序列和列序列范围内容iloc同理)

  1. 当只获取行的时候,列可以省略

  2. 当只获取列的时候,行不能省略可以写作loc[ : , 列索引],意思是所有行都选中

1 创建一个DataFrame作为示例

import pandas as pd
# 创建一个df
data = {'state': ['Ohio', 'Ohio', 'Ohio', 'Nevada', 'Nevada', 'Nevada'],
        'year': [2000, 2001, 2002, 2001, 2002, 2003],
        'pop': [1.5, 1.7, 3.6, 2.4, 2.9, 3.2]}
frame = pd.DataFrame(data, columns=['year', 'state', 'pop', 'debt'],
                      index=['one', 'two', 'three', 'four',
                             'five', 'six'])
frame
year state pop debt
one 2000 Ohio 1.5 NaN
two 2001 Ohio 1.7 NaN
three 2002 Ohio 3.6 NaN
four 2001 Nevada 2.4 NaN
five 2002 Nevada 2.9 NaN
six 2003 Nevada 3.2 NaN

2 获取行和列索引

学习获取行列之前,我们先了解一下如果获取行和列的索引

# 获取行、列名称方法
frame.index
Index(['one', 'two', 'three', 'four', 'five', 'six'], dtype='object')
frame.columns
Index(['year', 'state', 'pop', 'debt'], dtype='object')

3 常用的索引方式

首先我们明确两个概念

4 名称索引获取行列

4.1 获取列 –> df[列名]

df[列名序列]

获取一列:df[列名]

如果获取一列,我们直接写入列名即可

# 获取一列
frame["year"]
one      2000
two      2001
three    2002
four     2001
five     2002
six      2003
Name: year, dtype: int64
获取多列: df[ [多个列名] ]

​ 如果获取多列需要写入多个列名的列表

# 获取多列
frame[['year', 'state']]
year state
one 2000 Ohio
two 2001 Ohio
three 2002 Ohio
four 2001 Nevada
five 2002 Nevada
six 2003 Nevada

4.2 获取行 -> df.loc[]

获取一行
# 获取一行的的方法
frame.loc['one']
year     2000
state    Ohio
pop       1.5
debt      NaN
Name: one, dtype: object
获取多行
# 获取多行的方法
frame.loc[['one','two']]

year state pop debt
one 2000 Ohio 1.5 NaN
two 2001 Ohio 1.7 NaN
使用切片进行获取,此处不需要使用.loc
frame['one':'two']
year state pop debt
one 2000 Ohio 1.5 NaN
two 2001 Ohio 1.7 NaN

4.3 使用.loc方法获取你想获取的所有

获取指定的行和列区域

df.loc[ 行名序列 , 列名序列 ]:获取指定的行序列和列序列的交集,就是把这个区域确定出来

  • 使用loc的时候左侧填写行序列,右侧填写列序列;

  • 此处序列的概念同上,可以是单个名称,也可是一个列表

  • 只有行序列的时候,右侧可以省略

获取一行多列
frame.loc['one',['year','state']]
year     2000
state    Ohio
Name: one, dtype: object
获取多行多列
# 同时获取指定行和列
frame.loc[['one', 'two'],['year','state']]
year state
one 2000 Ohio
two 2001 Ohio
获取指定的列区域

df.loc[:,列序列],此处的 冒号:,可以理解切片的含义,即获取所有的行,同时指定列

frame.loc[:, 'year']
one      2000
two      2001
three    2002
four     2001
five     2002
six      2003
Name: year, dtype: int64

4.4 切片的妙用

我们可以指定行和列切片的起点和终点,左闭右闭区间

下面代码可以理解为,行从名称为’two’的行开始,一直到最后;列从名称为’year’的列开始一直到最后

frame.loc['two': , "year":]
year state pop debt
two 2001 Ohio 1.7 NaN
three 2002 Ohio 3.6 NaN
four 2001 Nevada 2.4 NaN
five 2002 Nevada 2.9 NaN
six 2003 Nevada 3.2 NaN

当然你完全可以指定他的终点

frame.loc['two':'five', 'year':'pop']
year state pop
two 2001 Ohio 1.7
three 2002 Ohio 3.6
four 2001 Nevada 2.4
five 2002 Nevada 2.9

5 整数索引 iloc[行索引序列,列索引序列]

iloc的使用和loc一致,只不过是将名称索引改为整数索引
整数索引就是使用行和列的下标(索引)进行获取

5.1 获取行

就像loc,只获取行的时候,列序列完全可以省略,反之则不行。

获取一行
# 获取第0行
frame.iloc[0]
year     2000
state    Ohio
pop       1.5
debt      NaN
Name: one, dtype: object
获取多行

frame.iloc[[0,1]]

year state pop debt
one 2000 Ohio 1.5 NaN
two 2001 Ohio 1.7 NaN
使用切片获取,左闭右开
# 切片获取多行 左闭右开
frame.iloc[0:1]
year state pop debt
one 2000 Ohio 1.5 NaN

5.2 获取列

只要将行切片获取全部即可

获取一列
frame.iloc[:, 1]
one        Ohio
two        Ohio
three      Ohio
four     Nevada
five     Nevada
six      Nevada
Name: state, dtype: object
获取多列
frame.iloc[:, [1, 2]]
state pop
one Ohio 1.5
two Ohio 1.7
three Ohio 3.6
four Nevada 2.4
five Nevada 2.9
six Nevada 3.2
使用切片获取多列
# 使用切片
frame.iloc[:, 1: 3]
state pop
one Ohio 1.5
two Ohio 1.7
three Ohio 3.6
four Nevada 2.4
five Nevada 2.9
six Nevada 3.2

5.3 获取指定行和列范围

方法与loc完全一致,只是换了索引的方式

获取多行多列
frame.iloc[[2,3],[1,3]]
使用切片获取
### 获取指定行和列范围
frame.iloc[2:, 3:]
debt
three NaN
four NaN
five NaN
six NaN

参考

利用 Python 进行数分析 · 第 2 版

原文地址:https://blog.csdn.net/Roxlu7/article/details/128167512

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任

如若转载,请注明出处:http://www.7code.cn/show_27260.html

如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱suwngjj01@126.com进行投诉反馈,一经查实,立即删除

发表回复

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