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一方面 ...
随机推荐
- Django实现自动发布(2视图-服务版本查找和新增)
前面做好了服务的管理,接下来是服务版本的管理,和服务类似,版本也有增删改查.先在服务的管理页面做一个入口,如下图: 需要在上一步的服务管理页面增加按钮.按钮方法,点击按钮跳转时要打开一个新的页面,所以 ...
- vue动态绑定class的几种方式
对象方法 -最简单的绑定(这里的active加不加单引号都可以,以下也一样都能渲染) :class="{ 'active': isActive }" 判断是否绑定一个active ...
- API调试工具--------Postman
Postman一款非常流行的API调试工具.其实,开发人员用的更多.因为测试人员做接口测试会有更多选择,例如Jmeter.soapUI等.不过,对于开发过程中去调试接口,Postman确实足够的简单方 ...
- Jenkins build 后 tomcat 启不来
Jenkins build 后 war 包复制到 tomcat 下,启不来 添加 :export BUILD_ID=dontKillMe /usr/local/iron/tomcat8085/bin/ ...
- JavaScript 图片与Base64数据互相转换脚本
JavaScript 图片与Base64数据互相转换脚本 注: 转换过程中注意跨域问题.测试页是否支持相关标签创建.dom结构. 方法一:非Html 5使用FileReader 使用XMLHttpRe ...
- matlab学习笔记13_2匿名函数
一起来学matlab-matlab学习笔记13函数 13_2 匿名函数 觉得有用的话,欢迎一起讨论相互学习~Follow Me 参考文献 https://ww2.mathworks.cn/help/m ...
- mockito的用法
well,说来惭愧,之前一直知道有这么个东西,但总是看不进去.刚好趁着这次迭代间隙有些闲暇,认真看了下,大概明白是怎么回事了. 首先,mock是个概念,这个词的本意就是“虚假的”.“模仿的”.在测试的 ...
- JAVA中try、catch、finally带return的执行顺序总结
异常处理中,try.catch.finally的执行顺序,大家都知道是按顺序执行的.即,如果try中没有异常,则顺序为try→finally,如果try中有异常,则顺序为try→catch→final ...
- [原]使用kubeadm部署kubernetes(一)
####################### 以下为声明 ##################### 在公众号 木子李的菜田 输入关键词: k8s 有系列安装文档 此文档是之前做笔记在 ...
- [ kvm ] 三种基础网络模型创建及分析
1. 前言 最近在模拟生产环境在做测试,本来准备用 vmware 直接来实现的,本着学以致用的道理,选择直接在linux 环境使用 kvm 来模拟测试,遇到的第一个问题就是,网络环境的模拟.这里对比v ...