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中数据的索引及切片操作的更多相关文章
- pandas 对数据帧DataFrame中数据的增删、补全及转换操作
1.创建数据帧 import pandas as pd df = pd.DataFrame([[1, 'A', '3%' ], [2, 'B'], [3, 'C', '5%']], index=['r ...
- pandas | 如何在DataFrame中通过索引高效获取数据?
本文始发于个人公众号:TechFlow,原创不易,求个关注 今天是pandas数据处理专题的第四篇文章,我们一起来聊聊DataFrame中的索引. 上一篇文章当中我们介绍了DataFrame数据结构当 ...
- pandas,对dataFrame中某一个列的数据进行处理
背景:dataFrame的数据,想对某一个列做逻辑处理,生成新的列,或覆盖原有列的值 下面例子中的df均为pandas.DataFrame()的数据 1.增加新列,或更改某列的值 df[&qu ...
- pandas | 详解DataFrame中的apply与applymap方法
本文始发于个人公众号:TechFlow,原创不易,求个关注 今天是pandas数据处理专题的第5篇文章,我们来聊聊pandas的一些高级运算. 在上一篇文章当中,我们介绍了panads的一些计算方法, ...
- pandas 获取数据帧DataFrame的行、列数
1.创建数据帧 import pandas as pd df = pd.DataFrame([[1, 'A', '3%' ], [2, 'B']], index=['row_0', 'row_1'], ...
- Pandas:将DataFrame中的一列转化为List
#假设data是一个DataFrame对象,如果要把它的第二列转换为List print(data.iloc[:,1].to_list())
- 数据可视化基础专题(七):Pandas基础(六) 数据增删改以及相关操作
首先第一部还是导入 Pandas 与 NumPy ,并且要生成一个 DataFrame ,这里小编就简单的使用随机数的形式进行生成,代码如下: import numpy as np import pa ...
- python中str的索引、切片
1 a = "hello" 2 a1 = a[1] 3 a2 = a[0:2] 4 print(a1) 5 print(a2) 我们通过索引获取字符串中指定位数的字符 通过切片获取 ...
- 控制台程序实现利用CRM组织服务和SqlConnection对数据库中数据的增删改查操作
一.首先新建一个控制台程序.命名为TestCol. 二.打开App.config在里面加入,数据库和CRM连接字符串 <connectionStrings> <add name=&q ...
随机推荐
- Spring Security-- 验证码功能的实现
spring security4 添加验证码 http://www.itwendao.com/article/detail/165400.html http://www.itdadao.com/art ...
- Loadrunner三种post格式的请求
Loadrunner三种post格式的请求 web_custom_request intweb_custom_request(const char *RequestName, <List of ...
- 选择排序SelectionSort
转自https://www.cnblogs.com/shen-hua/p/5424059.html a) 原理:每一趟从待排序的记录中选出最小的元素,顺序放在已排好序的序列最后,直到全部记录排序完毕. ...
- MySQL 慢查询日志总结
慢查询日志概念 MySQL的慢查询日志是MySQL提供的一种日志记录,它用来记录在MySQL中响应时间超过阀值的语句,具体指运行时间超过long_query_time值的SQL,则会被记录到慢查询日志 ...
- go语言nsq源码解读一-基本介绍
简单介绍一下nsq. 参考 http://feilong.me/2013/05/nsq-realtime-message-processing-system 的介绍:NSQ是由知名短链接服务商bitl ...
- retry.go
package clientv3 import ( "github.com/coreos/etcd/etcdserver/api/v3rpc/rpctypes" p ...
- bzoj 1592 dp
就是dp啊 f[i][j]表示到第i位,最后一位高度是j的最小花费 转移::f[i][j]=minn(f[i-1][k])+abs(a[i]-num[j]);(k<=j) #include< ...
- 为什么说JAVA中要慎重使用继承
JAVA中使用到继承就会有两个无法回避的缺点: 打破了封装性,迫使开发者去了解超类的实现细节,子类和超类耦合. 超类更新后可能会导致错误. 继承打破了封装性 关于这一点,下面是一个详细的例子(来源于E ...
- javascript && php &&java
java && javascript && php 轰炸!!!恢复 1.javascript简介 *是基于对象和时间的驱动语言,应用于客户端. -----基于对象: * ...
- Flask导入静态文件问题
然而如果使用flask开发web,并且需要在本地导入已经写好的css js 文件或者image一系列,这些文件是静态文件,需要另外建一个文件夹static;并且在html文件修改导入方法,exampl ...