Lesson8——Pandas reindex重置索引
1 简介
重置索引(reindex)可以更改原 DataFrame 的行标签或列标签,并使更改后的行、列标签与 DataFrame 中的数据逐一匹配。通过重置索引操作,您可以完成对现有数据的重新排序。如果重置的索引标签在原 DataFrame 中不存在,那么该标签对应的元素值将全部填充为 NaN。
2 重置行列标签
选取特定行、列。
示例:先构建数据
index = ['Firefox', 'Chrome', 'Safari', 'IE10', 'Konqueror']
df = pd.DataFrame({'http_status': [200, 200, 404, 404, 301],
'response_time': [0.04, 0.02, 0.07, 0.08, 1.0]},
index=index)
df
输出结果:
http_status response_time
Firefox 200 0.04
Chrome 200 0.02
Safari 404 0.07
IE10 404 0.08
Konqueror 301 1.00
示例:同时使用行、列标签选取数据。
new_index = ['Firefox', 'IE10', 'Safari']
df.reindex(index=new_index,columns=['response_time'])
输出结果:
response_time
Firefox 0.04
IE10 0.08
Safari 0.07
示例:只使用行标签选取数据。
new_index = ['Safari', 'Iceweasel', 'Comodo Dragon', 'IE10',
'Chrome']
df.reindex(new_index)
输出结果:不存在的行使用 NaN 代替。
http_status response_time
Safari 404.0 0.07
Iceweasel NaN NaN
Comodo Dragon NaN NaN
IE10 404.0 0.08
Chrome 200.0 0.02
现有 a、b 两个 DataFrame 对象,如果想让 a 的行索引与 b 相同,您可以使用 reindex_like() 方法。
示例如下:
a = pd.DataFrame(np.arange(6).reshape((2,3)),columns=['col1','col2','col3'])
b = pd.DataFrame(np.arange(12).reshape((4,3)),columns=['col1','col2','col3'])
a.reindex_like(b)
输出结果:由于 a 的 size 小于 b ,所以 2 、3行不存在,用 NaN 代替。
col1 col2 col3
0 0.0 1.0 2.0
1 3.0 4.0 5.0
2 NaN NaN NaN
3 NaN NaN NaN
示例:
b.reindex_like(a)
输出结果:
col1 col2 col3
0 0 1 2
1 3 4 5
3 填充元素值
reindex_like() 提供了一个可选的参数 method,使用它来填充相应的元素值,参数值介绍如下:
- pad/ffill:向前填充值;
- bfill/backfill:向后填充值;
- nearest:从距离最近的索引值开始填充。
示例:
a.reindex_like(b,method='ffill')
输出结果:相当于从有数据的最后一行复制数据到下面的每一行。
col1 col2 col3
0 0 1 2
1 3 4 5
2 3 4 5
3 3 4 5
示例:
a.reindex_like(b,method='bfill')
输出结果:相当于从最后一行复制数据到上面的行。
col1 col2 col3
0 0.0 1.0 2.0
1 3.0 4.0 5.0
2 NaN NaN NaN
3 NaN NaN NaN
示例:
a.reindex_like(b,method='nearest')
输出结果:
col1 col2 col3
0 0 1 2
1 3 4 5
2 3 4 5
3 3 4 5
4 限制填充行数
reindex_like() 还提供了一个额外参数 limit,该参数用来控制填充的最大行数。
示例如下:
a.reindex_like(b,method='ffill',limit=1)
输出结果:这里只填充了 1 行。
col1 col2 col3
0 0.0 1.0 2.0
1 3.0 4.0 5.0
2 3.0 4.0 5.0
3 NaN NaN NaN
5 重命名标签
rename() 方法允许您使用某些映射 (dict或Series) 或任意函数来对行、列标签重新命名。
原始数据:df1 =
col1 col2 col3
0 0 1 2
1 3 4 5
示例如下:
df1.rename(columns={'col1':'c1','col2':'c2','col3':'c3'},index={0:'A',1:'B'})
输出结果:
c1 c2 c3
A 0 1 2
B 3 4 5
rename() 方法提供了一个 inplace 参数,默认值为 False,表示拷贝一份原数据,并在复制后的数据上做重命名操作。若 inplace=True 则表示在原数据的基础上重命名。
Lesson8——Pandas reindex重置索引的更多相关文章
- Pandas基本功能之reindex重新索引
重新索引 reindex重置索引,如果索引值不存在,就引入缺失值 参数介绍 参数 说明 index 用作索引的新序列 method 插值 fill_vlaue 引入缺失值时的替代NaN limit 最 ...
- pandas重置索引的几种方法探究
pandas重置索引的几种方法探究 reset_index() reindex() set_index() 函数名字看起来非常有趣吧! 不仅如此. 需要探究. http://nbviewer.jupy ...
- 【pandas】pandas.DataFrame.rename()---重置索引名称
官方文档 github地址 例子: 创建DataFrame ### 导入模块 import numpy as np import pandas as pd import matplotlib.pypl ...
- Pandas | 08 重建索引
重新索引会更改DataFrame的行标签和列标签. 可以通过索引来实现多个操作: 重新排序现有数据以匹配一组新的标签. 在没有标签数据的标签位置插入缺失值(NA)标记. import pandas a ...
- pandas基础用法——索引
# -*- coding: utf-8 -*- # Time : 2016/11/28 15:14 # Author : XiaoDeng # version : python3.5 # Softwa ...
- pandas中层次化索引与切片
Pandas层次化索引 1. 创建多层索引 隐式索引: 常见的方式是给dataframe构造函数的index参数传递两个或是多个数组 Series也可以创建多层索引 Series多层索引 B =Ser ...
- pandas 之 时间序列索引
import numpy as np import pandas as pd 引入 A basic kind of time series object in pandas is a Series i ...
- pandas 之 多层索引
In many applications, data may be spread across a number of files or datasets or be arranged in a fo ...
- REINDEX - 重建索引
SYNOPSIS REINDEX { DATABASE | TABLE | INDEX } name [ FORCE ] DESCRIPTION 描述 REINDEX 基于存储在表上的数据重建索引, ...
随机推荐
- CF 593B Anton and Lines(水题)
题意是给你n条直线,和x1,x2;问 在x1,x2之间(不包括在x1,x2上) 存不存在任意两条线的交点. 说思路,其实很简单,因为给的直线的条数很多,所以无法暴力求每两条直线的交点,那么就求每条直线 ...
- hdu-1421搬寝室(dp)
http://acm.hdu.edu.cn/showproblem.php?pid=1421; 思路:先将所给的椅子的价值按升序排列,举个例子,四张椅子的价值分别为a,b,c,d(a<b< ...
- Docker 与 K8S学习笔记(八)—— 自定义容器网络
我们在上一篇中介绍了Docker中三种网络,none.host和bridge,除了这三种网络,Docker还允许我们创建自定义网络,当我们要创建自定义网络时,Docker提供了三种网络驱动供我们选择: ...
- 洛谷1052——过河(DP+状态压缩)
题目描述 在河上有一座独木桥,一只青蛙想沿着独木桥从河的一侧跳到另一侧.在桥上有一些石子,青蛙很讨厌踩在这些石子上.由于桥的长度和青蛙一次跳过的距离都是正整数,我们可以把独木桥上青蛙可能到达的点看成数 ...
- fastapi(一)
废话不多说,直接上代码. 目录结构, 由于我也是刚开始学这个框架,只是了解了怎么注册蓝图,JWT的集成,数据库的集成,想了解更多,自行打开官方文档去详细阅读.fastapi官网文档链接 创建一个mai ...
- select......for update会锁表还是锁行
select查询语句是不会加锁的,但是select .......for update除了有查询的作用外,还会加锁呢,而且它是悲观锁. 那么它加的是行锁还是表锁,这就要看是不是用了索引/主键. 没用索 ...
- salesforce零基础学习(一百一十)list button实现的一些有趣事情
本篇参考: salesforce零基础学习(九十五)lightning out https://developer.salesforce.com/docs/component-library/docu ...
- Exploring Architectural Ingredients of Adversarially Robust Deep Neural Networks
目录 概 主要内容 深度 宽度 代码 Huang H., Wang Y., Erfani S., Gu Q., Bailey J. and Ma X. Exploring architectural ...
- Robust Pre-Training by Adversarial Contrastive Learning
目录 概 主要内容 代码 Jiang Z., Chen T., Chen T. & Wang Z. Robust Pre-Training by Adversarial Contrastive ...
- [c++]对vector<T>容器求交集,并集,去重
#include "iostream" #include "vector" #include "algorithm" //sort函数.交并 ...