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[‘列名’]

原文地址:https://www.cnblogs.com/HL-space/p/10654842.html

时间: 2024-11-11 09:49:56

pandas 对数据帧DataFrame中数据的索引及切片操作的相关文章

pandas 对数据帧DataFrame中数据的增删、补全及转换操作

1.创建数据帧 import pandas as pd df = pd.DataFrame([[1, 'A', '3%' ], [2, 'B'], [3, 'C', '5%']], index=['row_0', 'row_1', 'row_2'], columns=['col_0', 'col_1', 'col_2']) 2.增加行.列 数据帧DataFrame的每一行都可看作是一个对象,每一列都是该对象的不同属性.每行都具有多维度的属性,因此每行都可以看作是一个小的DataFrame:而每列

第二阶段 MySQL函数库 表中数据查询与多表操作

一位初学php的随堂笔记,记录自己的成长! 一.表结构的修改(DDL) 1.添加表结构的字段 a.ALTER TABLE 表名 ADD 字段名 数据类型 [字段属性|约束条件] [FIRST|AFTER 字段名]: b. 添加多个字段 ALTER TABLE 表名 ADD 字段名 数据类型 [字段属性|约束条件] [FIRST|AFTER 字段名], ADD 字段名 数据类型 [字段属性|约束条件] [FIRST|AFTER 字段名]...: 2 删除字段 ALTER TABLE 表名 DROP

索引与切片运算符重载

索引和切片运算符的重载 方法名 运算符和表达式 说明 __getitem__(self, i) x = self[i] 索引/切片取值 __setitem__(self, i, val) self[i] = val 索引/切片赋值 __delitem__(self, i) del self[i] 删除索引/切片 作用: 让自定义的类的对象能够支持索引和切片操作 class MyList: def __init__(self, iterable=()): self.data = list(iter

Pandas中数据的处理

有两种丢失数据 --None --np.nan(NaN) None是python自带的,其类型为python object.因此,None不能参与到任何计算中 Object类型的运算比int类型的运算慢的多 计算不同数据类型求和时间 %timeit np.arange(1e5,dtype=xxx).sum() %timeit是指python表达式或语句的执行时间 Pandas中的none与np.nan都视作np.nan 数据清洗 df.loc[index,column] ------>元素索引,

(数据科学学习手札73)盘点pandas 1.0.0中的新特性

本文对应脚本及数据已上传至我的Github仓库https://github.com/CNFeffery/DataScienceStudyNotes 1 简介 毫无疑问pandas已经成为基于Python的数据分析领域最重要的包,而就在最近,pandas终于迎来了1.0.0版本,对于pandas来说这是一次更新是里程碑式的,删除了很多旧版本中臃肿的功能,新增了一些崭新的特性,更加专注于高效实用的数据分析,本文就将针对pandas 1.0.0在笔者眼中比较重要的特性进行介绍,对于想要完整彻底了解新版

用PyQt5来即时显示pandas Dataframe的数据,附qdarkstyle黑夜主题样式(美美哒的黑夜主题)

import sys from qdarkstyle import load_stylesheet_pyqt5 from PyQt5.QtWidgets import QApplication, QTableView from PyQt5.QtCore import QAbstractTableModel, Qt class QtTable(QAbstractTableModel): def __init__(self, data): QAbstractTableModel.__init__(s

pandas入门之DataFrame

创建DataFrame - DataFrame是一个[表格型]的数据结构.DataFrame由按一定顺序排列的多列数据组成.设计初衷是将Series的使用场景从一维拓展到多维.DataFrame既有行索引,也有列索引. - 创建DataFrame的方式 - 列表 - 字典 - 系列 - Numpy ndarrays - 另一个数据帧(DataFrame) - DataFrame的参数 - data 数据采取各种形式,如:ndarray,series,map,lists,dict,constant

pandas 学习(2): pandas 数据结构之DataFrame

DataFrame 类型类似于数据库表结构的数据结构,其含有行索引和列索引,可以将DataFrame 想成是由相同索引的Series组成的Dict类型.在其底层是通过二维以及一维的数据块实现. 1.  DataFrame 对象的构建 1.1 用包含等长的列表或者是NumPy数组的字典创建DataFrame对象 In [68]: import pandas as pd In [69]: from pandas import Series,DataFrame # 建立包含等长列表的字典类型 In [

Python array,list,dataframe索引切片操作 2016年07月19日——智浪文档

array,list,dataframe索引切片操作 2016年07月19日——智浪文档 list,一维,二维array,datafrme,loc.iloc.ix的简单探讨 Numpy数组的索引和切片介绍: 从最基础的list索引开始讲起,我们先上一段代码和结果: a = [0,1,2,3,4,5,6,7,8,9] a[:5:-1] #step < 0,所以start = 9 a[0:5:-1] #指定了start = 0 a[1::-1] #step < 0,所以stop = 0 输出: [