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一方面 ...
随机推荐
- asp.netCore3.0区域和路由配置变化
一.MVC 服务注册 ASP.NET Core 3.0 添加了用于注册内部的 MVC 方案的新选项Startup.ConfigureServices.三个新的顶级扩展方法与 MVC 方案上IServi ...
- uniapp - 富文本编辑器editor(仅支持App和微信小程序)
uniapp - editor富文本编辑器用法示例 丢几个图,用心看下去(-.-) 这里使用了https://ext.dcloud.net.cn/plugin?id=412 插件,用于选择字体颜色.其 ...
- 破解magento加密的密码算法
magento遇到丢掉密码的情况,其实很常见……比如我这记性,还好我比较暴力:-P 先看一段代码: /** * Hash a string * * @param s ...
- python skimage图像处理(三)
python skimage图像处理(三) This blog is from: https://www.jianshu.com/p/7693222523c0 霍夫线变换 在图片处理中,霍夫变换主要 ...
- H3C/华为交换机配置NTP客户端
H3C clock timezone UTC add ntp-service unicast-server 1.1.1.1 //ntp服务器地址 clock protocol ntp ntp-serv ...
- 【转】Sql Server查看所有数据库名,表名,字段名(SQL语句)
-- 获取所有数据库名 select * from master..SysDatabases; -- 获取hotline数据库中所有表名 select name from hotline..SysOb ...
- 【转载】 tf.ConfigProto和tf.GPUOptions用法总结
原文地址: https://blog.csdn.net/C_chuxin/article/details/84990176 -------------------------------------- ...
- 泡泡一分钟:Robust Attitude Estimation Using an Adaptive Unscented Kalman Filter
张宁 Robust Attitude Estimation Using an Adaptive Unscented Kalman Filter 使用自适应无味卡尔曼滤波器进行姿态估计链接:https: ...
- ASP.NET LinqDataSource数据绑定后,遇到[MissingMethodException: 没有为该对象定义无参数的构造函数。]问题。
问题出现的情形:LinqDataSource数据绑定到DetailsView或GridView均出错,错误如下: “/”应用程序中的服务器错误. 没有为该对象定义无参数的构造函数. 说明: 执行当前 ...
- Django的分页器 paginator
导入 from django.core.paginator import Paginator,EmptyPage,PageNotAnInteger Page对象 Paginator.page()将返回 ...