【转】Pandas学习笔记(三)修改&添加值
2024-09-03 21:38:45
Pandas学习笔记系列:
- Pandas学习笔记(一)基本介绍
- Pandas学习笔记(二)选择数据
- Pandas学习笔记(三)修改&添加值
- Pandas学习笔记(四)处理丢失值
- Pandas学习笔记(五)合并 concat
- Pandas学习笔记(六)合并 merge
- Pandas学习笔记(七)plot画图
原文:https://morvanzhou.github.io/tutorials/data-manipulation/np-pd/3-3-pd-assign/ 本文有删改
创建数据
我们可以根据自己的需求, 用 pandas
进行更改数据里面的值, 或者加上一些空的,或者有数值的列.
首先建立了一个 6X4 的矩阵数据。
dates = pd.date_range('20130101', periods=6)
df = pd.DataFrame(np.arange(24).reshape((6,4)),index=dates, columns=['A','B','C','D'])
"""
A B C D
2013-01-01 0 1 2 3
2013-01-02 4 5 6 7
2013-01-03 8 9 10 11
2013-01-04 12 13 14 15
2013-01-05 16 17 18 19
2013-01-06 20 21 22 23
"""
根据位置设置 loc 和 iloc
我们可以利用索引或者标签确定需要修改值的位置。
df.iloc[2,2] = 1111
df.loc['20130101','B'] = 2222
"""
A B C D
2013-01-01 0 2222 2 3
2013-01-02 4 5 6 7
2013-01-03 8 9 1111 11
2013-01-04 12 13 14 15
2013-01-05 16 17 18 19
2013-01-06 20 21 22 23
"""
根据条件设置
如果现在的判断条件是这样, 我们想要更改B中的数, 而更改的位置是取决于 A 的. 对于A大于4的位置. 更改B在相应位置上的数为0.
df.B[df.A>4] = 0
"""
A B C D
2013-01-01 0 2222 2 3
2013-01-02 4 5 6 7
2013-01-03 8 0 1111 11
2013-01-04 12 0 14 15
2013-01-05 16 0 18 19
2013-01-06 20 0 22 23
"""
按行或列设置
如果对整列做批处理, 加上一列 ‘F’, 并将 F 列全改为 NaN, 如下:
df['F'] = np.nan
"""
A B C D F
2013-01-01 0 2222 2 3 NaN
2013-01-02 4 5 6 7 NaN
2013-01-03 8 0 1111 11 NaN
2013-01-04 12 0 14 15 NaN
2013-01-05 16 0 18 19 NaN
2013-01-06 20 0 22 23 NaN
"""
添加数据
用上面的方法也可以加上 Series 序列(但是长度必须对齐)。
df['E'] = pd.Series([1,2,3,4,5,6], index=pd.date_range('20130101',periods=6))
"""
A B C D F E
2013-01-01 0 2222 2 3 NaN 1
2013-01-02 4 5 6 7 NaN 2
2013-01-03 8 0 1111 11 NaN 3
2013-01-04 12 0 14 15 NaN 4
2013-01-05 16 0 18 19 NaN 5
2013-01-06 20 0 22 23 NaN 6
"""
注意添加新的一列数据时一定要记得指明index
,因为你不指明index
的话,即使新的列元素数量和原来DataFrame一样,那么最终还是会以NaN
的格式初始化,看下面例子:
df['E'] = pd.Series([1,2,3,4,5,6],)
print(df)
"""
A B C D E
2013-01-01 0 1 2 3 NaN
2013-01-02 4 5 6 7 NaN
2013-01-03 8 9 10 11 NaN
2013-01-04 12 13 14 15 NaN
2013-01-05 16 17 18 19 NaN
2013-01-06 20 21 22 23 NaN
"""
当然如果我们指定的index
和原来的不一样也没关系,因为pandas会自动把没有对应的部分填充为NaN
,例子如下:
df['E'] = pd.Series([1,2,3,4,5,6], index=pd.date_range('20130103',periods=6))
print(df)
"""
A B C D E
2013-01-01 0 1 2 3 NaN
2013-01-02 4 5 6 7 NaN
2013-01-03 8 9 10 11 1.0
2013-01-04 12 13 14 15 2.0
2013-01-05 16 17 18 19 3.0
2013-01-06 20 21 22 23 4.0
"""
最新文章
- MySQL 5.6.17 rpm 文件安装顺序
- mysql 查询执行的流程
- <;<;深入Java虚拟机>;>;-虚拟机类加载机制-学习笔记
- MessagerService总结
- 编程实战——电影管理器之界面UI及动画切换
- Linux防火墙配置—允许转发
- C#常用的字符串处理方法
- LeetCode——295. Find Median from Data Stream
- 安装pandas时出现环境错误
- 批量导入导出站点权限site permissions
- 生成器-代码举例:()和yield
- SQL Server CONVERT() 日期转换为新数据类型的 通用函数
- mocha、should、supertest释义
- .NetCore WebApi + Vue +MySql搭建博客
- php过滤字段htmlentities,htmlspecialchars,strip_tags
- Ansiable Manage MySQL global variables
- Windows远程桌面没有密码的电脑
- js中构造函数和普通函数的区别
- Centos 7 通过yum的方式安装配置Artifactory 5.10
- Sublime Text 编辑器 插件 之 ";Sublime Alignment"; 详解
热门文章
- 求数组前K个大的数
- 洛谷 P1440 求m区间内的最小值
- [HNOI2012]集合选数(构造,状态压缩,DP)
- [LeetCode] 269. Alien Dictionary 另类字典
- 使用IDEA+vue.js+easyUI的demo
- 企业应用向ASP.NET Core迁移
- 1+x证书《Web前端开发》等级考试样题
- 纯 css 打造一个小提示 tooltip
- [转帖]腾讯云TStack获下一代云计算技术创新奖 与鲲鹏等产品实现兼容性测试
- APUE—UNIX文件系统