pandas-05 map和replace操作
# pandas-05 map和replace操作
map可以做一个映射,对于操作大型的dataframe来说就非常方便了,而且也不容易出错。replace的作用是替换,这个很好理解。
import numpy as np
import pandas as pd
from pandas import Series, DataFrame
# create a dataframe
df1 = DataFrame({'城市':['北京', '上海', '广州'], '人口':[1000, 2000, 1500]})
print(df1)
# 添加一列
# df1['GDP'] = Series([1000, 3000, 2000])
# print(df1)
'''
人口 城市 GDP
0 1000 北京 1000
1 2000 上海 3000
2 1500 广州 2000
'''
dfp_map = {'北京':1000, '上海':2000, '广州':3000}
df1['GDP'] = df1['城市'].map(dfp_map)
print(df1)
'''
人口 城市 GDP
0 1000 北京 1000
1 2000 上海 2000
2 1500 广州 3000
总结:
使用map还是比创建series有优势的,使用map就可以不关心dataframe的index,
只需要关注对应的城市即可。
注意下面的实验
'''
# 再做一个实验,添加一个index
df2 = DataFrame({'城市':['北京', '上海', '广州'], '人口':[1000, 2000, 1500]}, index=['A', 'B', 'C'])
print(df2)
'''
人口 城市
A 1000 北京
B 2000 上海
C 1500 广州
'''
df2['GDP'] = Series([1000, 2000, 3000])
print(df2)
'''
人口 城市 GDP
A 1000 北京 NaN
B 2000 上海 NaN
C 1500 广州 NaN
可以看到答案是nan,这是为什么呢?因为 Series([1000, 2000, 3000])的索引默认是0,1,……
所以就出现了问题。
解决方法是:必须要给series添加指定的索引。
'''
# replace in series
s1 = Series(np.arange(10))
print(s1)
'''
1 1
2 2
3 3
4 4
5 5
6 6
7 7
8 8
9 9
dtype: int64
'''
print(s1.replace(1, np.nan)) # 会返回一个新的series,也可以使用字典的方式{1: np.nan}
'''
0 0.0
1 NaN
2 2.0
3 3.0
4 4.0
5 5.0
6 6.0
7 7.0
8 8.0
9 9.0
dtype: float64
'''
# 还可以采用列表的方式,把多个元素个replace掉
print(s1.replace([1, 2, 3], [10, 20, 30]))
'''
0 0
1 10
2 20
3 30
4 4
5 5
6 6
7 7
8 8
9 9
dtype: int64
'''
map可以做一个映射,对于操作大型的dataframe来说就非常方便了,而且也不容易出错。replace的作用是替换,这个很好理解。
import numpy as np
import pandas as pd
from pandas import Series, DataFrame
# create a dataframe
df1 = DataFrame({'城市':['北京', '上海', '广州'], '人口':[1000, 2000, 1500]})
print(df1)
# 添加一列
# df1['GDP'] = Series([1000, 3000, 2000])
# print(df1)
'''
人口 城市 GDP
0 1000 北京 1000
1 2000 上海 3000
2 1500 广州 2000
'''
dfp_map = {'北京':1000, '上海':2000, '广州':3000}
df1['GDP'] = df1['城市'].map(dfp_map)
print(df1)
'''
人口 城市 GDP
0 1000 北京 1000
1 2000 上海 2000
2 1500 广州 3000
总结:
使用map还是比创建series有优势的,使用map就可以不关心dataframe的index,
只需要关注对应的城市即可。
注意下面的实验
'''
# 再做一个实验,添加一个index
df2 = DataFrame({'城市':['北京', '上海', '广州'], '人口':[1000, 2000, 1500]}, index=['A', 'B', 'C'])
print(df2)
'''
人口 城市
A 1000 北京
B 2000 上海
C 1500 广州
'''
df2['GDP'] = Series([1000, 2000, 3000])
print(df2)
'''
人口 城市 GDP
A 1000 北京 NaN
B 2000 上海 NaN
C 1500 广州 NaN
可以看到答案是nan,这是为什么呢?因为 Series([1000, 2000, 3000])的索引默认是0,1,……
所以就出现了问题。
解决方法是:必须要给series添加指定的索引。
'''
# replace in series
s1 = Series(np.arange(10))
print(s1)
'''
1 1
2 2
3 3
4 4
5 5
6 6
7 7
8 8
9 9
dtype: int64
'''
print(s1.replace(1, np.nan)) # 会返回一个新的series,也可以使用字典的方式{1: np.nan}
'''
0 0.0
1 NaN
2 2.0
3 3.0
4 4.0
5 5.0
6 6.0
7 7.0
8 8.0
9 9.0
dtype: float64
'''
# 还可以采用列表的方式,把多个元素个replace掉
print(s1.replace([1, 2, 3], [10, 20, 30]))
'''
0 0
1 10
2 20
3 30
4 4
5 5
6 6
7 7
8 8
9 9
dtype: int64
'''
pandas-05 map和replace操作的更多相关文章
- Pandas对于CSV的简单操作
Pandas对于CSV的简单操作 最近在研究pandas对于csv文件的读取以及一些操作,网上的信息比较乱,写篇博客记录一下,毕竟自己写的才是最适合自己的用法. 首先我们应该都知道,pandas是一个 ...
- 003-Tuple、Array、Map与文件操作入门实战
003-Tuple.Array.Map与文件操作入门实战 Tuple 各个元素可以类型不同 注意索引的方式 下标从1开始 灵活 Array 注意for循环的until用法 数组的索引方式 上面的for ...
- vector 与map的下标操作
1.vector的下标操作不会添加元素,只能针对已经存在的元素操作. 2.map的下标操作具有副作用,key不存在,会在map中添加一个具有该key的新元素,新元素的value使用默认构造方法. 3. ...
- SQL-35 对于表actor批量插入如下数据,如果数据已经存在,请忽略,不使用replace操作
题目描述 对于表actor批量插入如下数据,如果数据已经存在,请忽略,不使用replace操作CREATE TABLE IF NOT EXISTS actor (actor_id smallint(5 ...
- golang在多个go routine中进行map或者slice操作应该注意的对象。
因为golang的map和列表切片都是引用类型,且非线程安全的,所以在多个go routine中进行读写操作的时候,会产生“map read and map write“的panic错误. 某一些类型 ...
- 小白学 Python 数据分析(6):Pandas (五)基础操作(2)数据选择
人生苦短,我用 Python 前文传送门: 小白学 Python 数据分析(1):数据分析基础 小白学 Python 数据分析(2):Pandas (一)概述 小白学 Python 数据分析(3):P ...
- Django框架05 /orm单表操作
Django框架05 /orm单表操作 目录 Django框架05 /orm单表操作 1. orm使用流程 2. orm字段 3. orm参数 4. orm单表简单增/删/改 5. orm单表查询 5 ...
- Pandas高级教程之:window操作
目录 简介 滚动窗口 Center window Weighted window 加权窗口 扩展窗口 指数加权窗口 简介 在数据统计中,经常需要进行一些范围操作,这些范围我们可以称之为一个window ...
- Guava中这些Map的骚操作,让我的代码量减少了50%
原创:微信公众号 码农参上,欢迎分享,转载请保留出处. Guava是google公司开发的一款Java类库扩展工具包,内含了丰富的API,涵盖了集合.缓存.并发.I/O等多个方面.使用这些API一方面 ...
随机推荐
- 大牛总结的MySQL锁优化【转】
MySQL 就是其中之一,它经历了多个版本迭代.数据库锁是 MySQL 数据引擎的一部分,今天我们就一起来学习 MySQL 的数据库锁和它的优化. MySQL 锁分类 当多个事务或者进程访问同一个资源 ...
- mysql实现row_number()和row_number() over(partition by)
row_number() ) r, test_table t 解释:给test_table里的数据设置行号, rn是行号 row_number() over(partition by) ,@rank: ...
- wms证书异常问题
目前我司已定位到两个原因,详细如下, 1. 快速生成的证书存在问题,导致APACHE和NGINX显示的时间都是4号凌晨 2. 贵司在配置完成162和163两台应用的APACHE证书,以及其中10. ...
- Python - Django - 自定义一个中间件
中间件简介: 中间件是在 wsgi.py 之后,urls.py 之前,在全局操作 Django 请求和响应的模块 在 settings.py 中可以看到中间件的相关配置 该列表中的每一个元素都是一个类 ...
- dubbo 报错问题记录:may be version or group mismatch
凌晨时候钉钉告警群里一直大量报错: 接口异常报警:项目:mp-rest,域名:inside-mp.01zhuanche.com,IP:10.30.3.60,接口地址:/api/v3/driverLog ...
- 使用 Alibaba 的 Homebrew 镜像源进行加速
使用 Alibaba 的 Homebrew 镜像源进行加速 平时我们执行 brew 命令安装软件的时候,跟以下 3 个仓库地址有关: brew.git homebrew-core.git homebr ...
- Maven多模块工程打包指定模块工程方法
Maven多模块工程打包指定模块工程执行如下命令: mvn clean package -pl 指定模块工程名 -am 参数说明: -am --also-make 同时构建所列模块的依赖模块:-am ...
- Dockerfile HEALTHCHECK健康检查
Dockerfile中使用HEALTHCHECK的形式有两种: 1.HEALTHCHECK [options] CMD command 2.HEALTHCHECK NODE 意思是禁止从父镜像继承的H ...
- [转]matlab GUI 新手入门——最基本的几个概念
本文摘自iLoveMatlab论坛 1.从最简单的开始 编程的基本思想是:我执行一个操作,程序做出一个反应."一个操作"包括点击鼠标.拖动滑块.填写数据.选择选项等:"做 ...
- Vim 入门
Vim 简介 打开 Vim的四种模式 一些命令 插入 移动 文件 编辑 环境设置 .vimrc 更多命令 环境设置 折叠 显示 Vim 简介 Vim 是字符模式下的一种文本编辑器,不需要图形界面,它是 ...