5. Pandas系列 - 重建索引
时间:2022-07-24
本文章向大家介绍5. Pandas系列 - 重建索引,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
- 示例
- 重建索引与其他对象对齐
- 填充时重新加注
- 重建索引时的填充限制
- 重命名
重新索引会更改DataFrame的行标签和列标签。重新索引意味着符合数据以匹配特定轴上的一组给定的标签。可以通过索引来实现多个操作:
- 重新排序现有数据以匹配一组新的标签
- 在没有标签数据的标签位置插入缺失值(NA)标记
示例
import pandas as pd
import numpy as np
N=20
df = pd.DataFrame({
'A': pd.date_range(start='2016-01-01',periods=N,freq='D'),
'x': np.linspace(0,stop=N-1,num=N),
'y': np.random.rand(N),
'C': np.random.choice(['Low','Medium','High'],N).tolist(),
'D': np.random.normal(100, 10, size=(N)).tolist()
})
#reindex the DataFrame
df_reindexed = df.reindex(index=[0,2,5], columns=['A', 'C', 'B'])
print (df_reindexed)
结果:
>>> df
A C D x y
0 2016-01-01 High 114.381446 0.0 0.308304
1 2016-01-02 High 113.903337 1.0 0.845635
2 2016-01-03 Low 88.598431 2.0 0.022341
3 2016-01-04 Medium 110.205763 3.0 0.137682
4 2016-01-05 High 92.871260 4.0 0.233312
5 2016-01-06 High 80.547223 5.0 0.316480
6 2016-01-07 Medium 102.559371 6.0 0.290867
7 2016-01-08 Medium 106.990847 7.0 0.078865
8 2016-01-09 Low 91.785478 8.0 0.867655
9 2016-01-10 High 89.334388 9.0 0.733685
10 2016-01-11 High 102.485193 10.0 0.682129
11 2016-01-12 High 89.719618 11.0 0.149376
12 2016-01-13 High 89.175230 12.0 0.522455
13 2016-01-14 High 80.997986 13.0 0.436974
14 2016-01-15 Medium 107.099049 14.0 0.154620
15 2016-01-16 High 85.012230 15.0 0.217840
16 2016-01-17 Low 118.415446 16.0 0.034683
17 2016-01-18 Medium 101.326426 17.0 0.797601
18 2016-01-19 Low 112.628830 18.0 0.067099
19 2016-01-20 Medium 101.985635 19.0 0.929806
>>> df.reindex(index=[0,2,5],columns=['A', 'C', 'B'])
A C B
0 2016-01-01 High NaN
2 2016-01-03 Low NaN
5 2016-01-06 High NaN
重建索引与其他对象对齐
有时可能希望采取一个对象和重新索引,其 轴 被标记为与另一个对象相同
import pandas as pd
import numpy as np
df1 = pd.DataFrame(np.random.randn(10,3),columns=['col1','col2','col3'])
df2 = pd.DataFrame(np.random.randn(7,3),columns=['col1','col2','col3'])
df1 = df1.reindex_like(df2)
print df1
res:
col1 col2 col3
0 -0.937012 0.281154 -0.206154
1 -0.387672 -1.161284 -1.053927
2 -0.078375 0.286627 3.185455
3 -0.952543 1.100563 0.873561
4 1.543179 -0.590498 0.569140
5 -0.887682 -0.390340 0.793262
6 0.200928 0.536087 -0.884333
注意 : 在这里,df1数据帧(DataFrame)被更改并重新编号,如df2。列名称应该匹配,否则将为整个列标签添加NAN。
填充时重新加注
reindex()采用可选参数方法,它是一个填充方法 其值如下:
- pad/ffill - 向前填充值
- bfill/backfill - 向后填充值
- nearest - 从最近的索引值填充
import pandas as pd
import numpy as np
df1 = pd.DataFrame(np.random.randn(6,3),columns=['col1','col2','col3'])
df2 = pd.DataFrame(np.random.randn(2,3),columns=['col1','col2','col3'])
# Padding NAN's
print df2.reindex_like(df1)
# Now Fill the NAN's with preceding Values
print ("Data Frame with Forward Fill:")
print df2.reindex_like(df1,method='ffill')
res:
col1 col2 col3
0 -0.109234 -0.757402 -0.167979
1 -1.478847 0.030590 -0.062580
2 NaN NaN NaN
3 NaN NaN NaN
4 NaN NaN NaN
5 NaN NaN NaN
Data Frame with Forward Fill:
col1 col2 col3
0 -0.109234 -0.757402 -0.167979
1 -1.478847 0.030590 -0.062580
2 -1.478847 0.030590 -0.062580
3 -1.478847 0.030590 -0.062580
4 -1.478847 0.030590 -0.062580
5 -1.478847 0.030590 -0.062580
重建索引时的填充限制
制参数在重建索引时提供对填充的额外控制。限制指定连续匹配的最大计数
import pandas as pd
import numpy as np
df1 = pd.DataFrame(np.random.randn(6,3),columns=['col1','col2','col3'])
df2 = pd.DataFrame(np.random.randn(2,3),columns=['col1','col2','col3'])
# Padding NAN's
print df2.reindex_like(df1)
# Now Fill the NAN's with preceding Values
print ("Data Frame with Forward Fill limiting to 1:")
print df2.reindex_like(df1,method='ffill',limit=1)
res:
col1 col2 col3
0 0.112024 -1.431111 -0.828381
1 -0.182373 -0.025696 -1.673949
2 NaN NaN NaN
3 NaN NaN NaN
4 NaN NaN NaN
5 NaN NaN NaN
Data Frame with Forward Fill limiting to 1:
col1 col2 col3
0 0.112024 -1.431111 -0.828381
1 -0.182373 -0.025696 -1.673949
2 -0.182373 -0.025696 -1.673949
3 NaN NaN NaN
4 NaN NaN NaN
5 NaN NaN NaN
重命名
rename()方法允许基于一些映射(字典或者系列)或任意函数来重新标记一个轴 参数有 column和index
import pandas as pd
import numpy as np
df1 = pd.DataFrame(np.random.randn(6,3),columns=['col1','col2','col3'])
print df1
print ("After renaming the rows and columns:")
print df1.rename(columns={'col1' : 'c1', 'col2' : 'c2'},
index = {0 : 'apple', 1 : 'banana', 2 : 'durian'}, inplace = True)
作者:Johngo
配图:Pexels
欢迎大家留言,点个在看,也可以分享到朋友圈
- 表单控件的副产品——查询控件
- 表单控件续(1)——应用接口来简化和分散代码
- 通过自定义配置实现插件式设计
- 让IoC动态解析自定义配置(提供基于Unity的实现)
- 如何让ASP.NET默认的资源编程方式支持非.ResX资源存储
- 在VS中通过建立依赖关系使文件结构更清晰
- 一个关于ConfigurationManager.GetSecion方法的小问题
- 追踪记录每笔业务操作数据改变的利器——SQLCDC
- 一个完整的用于追踪数据改变的解决方案
- C# 4.0新特性-"协变"与"逆变"以及背后的编程思想
- 通过内存分析工具来证明字符串驻留机制
- 如果在BackgroundWorker运行过程中关闭窗体…
- 从数据到代码——基于T4的代码生成方式
- 解决T4模板的程序集引用的五种方案
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- linux使用docker-compose部署软件配置详解
- 在Ubuntu中如何查看网络路由表详解
- linux中各种锁机制的使用与区别详解
- Linux环境下使用glog日志库的方法
- crontab执行时间与系统时间不一致问题解决
- Linux内核设备驱动之proc文件系统笔记整理
- CentOS7.6系统下使用yum配置lnmp环境的方法
- Linux内核设备驱动之高级字符设备驱动笔记整理
- Linux使用scp命令进行文件远程拷贝详解
- Linux内核设备驱动之Linux内核模块加载机制笔记整理
- linux无损扩容的方法
- Linux内核设备驱动之内核的时间管理笔记整理
- 使用squid搭建http和https的代理服务器设置指南
- linux中gdb的入门使用教程
- Linux命令中Ctrl+z、Ctrl+c和Ctrl+d的区别和使用详解