pandas 对数据帧DataFrame中数据的索引及切片操作

Posted hl-space

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了pandas 对数据帧DataFrame中数据的索引及切片操作相关的知识,希望对你有一定的参考价值。

1、创建数据帧

  index是行索引,即每一行的名字;columns是列索引,即每一列的名字。建立数据帧时行索引和列索引都需要以列表的形式传入。

import pandas as pd

df = pd.DataFrame([[1, 2, 3], [4, 5, 6]], index=[row_0, row_1], columns=[col_0, col_1, col_2])

技术图片

2、获取数据帧的行索引和列索引

2.1 获取行索引

# 以数组形式返回
row_name = df.index.values

技术图片

# 以列表形式返回
row_name = df.index.values.tolist()

技术图片

2.2 获取列索引

# 以数组的形式返回
col_name = df.columns.values

技术图片

# 以列表的形式返回
col_name = df.columns.values.tolist()

技术图片

3、获取指定行、列的元素

3.1 获取指定行的元素

  获取某行数据需用.loc[]或.iloc[]方法,不能直接索引。

# 以行名索引,返回一个系列(series)
df_row0 = df.loc[row_0]

技术图片

# 以行的绝对位置索引,返回一个系列(series)
df_row0 = df.iloc[0]

技术图片

3.2 获取指定列的元素

  获取某列数据可以通过列名直接索引。

# 以列名索引,返回一个系列(series)
df_col0 = df[col_0]

技术图片

  索引某列不能直接通过列的绝对位置来索引,但可以转换思路,借助列索引值实现用绝对位置的间接索引。

# df_col0 = df[0] 通过绝对位置直接索引报错
# 通过列索引名 df.columns 实现对列的绝对位置索引
df_col0 = df[df.columns[0]]

技术图片

4、对数据帧切片

 4.1 行切片

  对行进行切片操作,可以通过.iloc[]方法或直接用行的绝对位置。不能通过行名进行切片操作。

# 通过iloc[]方法切片,[0:2]左闭右开,即切取第0行和第1行
df_row = df.iloc[0:2]

 技术图片

# 通过行的绝对位置切片,[0:2]左闭右开,即切取第0行和第1行
df_row = df[0:2]

技术图片

4.2 列切片

  对列进行切片时,可以将所需要切取的列的列名组成一个一维的列表或数组,直接传入df[]即可。

# df_col = df[df.columns[0:2]] 切取第0列和第1列,与下句代码等价
df_col = df[[col_0, col_1]]

技术图片

4.3 局部切片

  先进行行切片,再进行列切片即可。

# 切取第0行和第1行,‘col_0‘和‘col_2‘列
df_new = df[0:2][[col_0, col_2]]

技术图片

5、获取某位置元素

5.1 通过行、列定位

# 通过行列定位,返回值为一个系列(series)
df_new = df.loc[row_0][[col_0]]

技术图片

5.2 通过.at[]方法

# 用行名和列名索引,返回该位置的具体元素
df_new = df.at[row_0, col_0]

技术图片

5.3 通过.iat[]方法

# 用行列的绝对位置定位,返回该位置的具体元素
df_new = df.iat[0,0]

技术图片

 

 小结:对行操作一般通过df.iloc[绝对位置]或df.loc[‘行名’],对列操作直接用df[‘列名’]

 

以上是关于pandas 对数据帧DataFrame中数据的索引及切片操作的主要内容,如果未能解决你的问题,请参考以下文章

通过 pyspark.sql.dataframe 将 XML 数据转换为 pandas 数据帧

Pandas:按行数将数据帧拆分为多个数据帧

PYTHON Pandas - 根据其他数据帧中的值对数据帧使用 Pandas 样式

Pandas Dataframe:将对角线子帧减少为单行或如何逐个填充数据帧

基于时间间隔使用 DatetimeIndex 对 Pandas 数据帧进行切片

Python Pandas - 主要数据帧,想要删除较小数据帧中的所有列