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一方面 ...
随机推荐
- Kafka安装教程(详细过程)
安装前期准备: 1,准备三个节点(根据自己需求决定) 2,三个节点上安装好zookeeper(也可以使用kafka自带的zookeeper) 3,关闭防火墙 chkconfig iptables o ...
- odoo开发笔记 -- 提高访问安全性的一种方式
场景描述: 最近在做项目的过程中,需要需要将odoo应用集成到其他系统中, 在对方的系统中点击我们的应用,打开对应系统,但是界面不做跳转,在当前页面打开,并且浏览器地址栏只显示IP+应用名,不让显示o ...
- css---【vw,vh】进行自适应布局单位
在进行CSS3自适应布局,会用到 vw 和 vh 进行布局 视口单位(Viewport units) 什么是视口? 在桌面端,视口指的是在桌面端,指的是浏览器的可视区域:而在移动端,它涉及3个视口:L ...
- 向net core 3.0进击——多平台项目发布与部署
前言 在经历过好多折腾后,总算是把部署走通了一遍,之前只是简单创建个工程在linux下部署,后来一直将这件事搁置,直到最近刚好团队入手一个小服务器,很显然是linux的,那就没啥说的了,Come On ...
- QT5.12 qtcreate 在Ubuntu14.04
Ubuntu14.04 下出现了 symbol dbus_message_get_allow_interactive_authorization, version LIBDBUS_1_3 not de ...
- asp.net core mvc 里的application中的start,end等事件
我们以前在用asp.net mvc或者webform的时候,经常用用到Application里的事件 start,end等.我们在.net core 里也同样有类似的方法. 在Startup类里,Co ...
- (原)ffmpeg中的writing_filter翻译
本文的主要目的是梳理,记录自己在学习开发ffmpeg视频滤镜的笔记.参考的主要内容是根据ffmpeg中doc下的writing_filter.txt文件以及ffmpeg的源码. author:liha ...
- EasyDSS高性能RTMP、HLS(m3u8)、HTTP-FLV、RTSP流媒体服务器解决方案之点播分享
背景介绍 EasyDSS流媒体服务器软件,提供一站式的视频上传.转码.点播.直播.时移回放等服务,极大地简化了开发和集成的工作.其中,点播功能主要包含:上传.转码.分发.直播功能,主要包含:直播.录像 ...
- netty例子-客户端每隔5秒发送查询时间的请求,服务器端响应请求
netty是jboss公司开发的,基于异步的.事件驱动的网络应用程序框架,快速开发高性能.高可靠性的服务器和客户端程序 public class TimeServer { ; public void ...
- C++ 工程师养成 每日一题third (子数列排序)
题目: 定义排序子序列为一个数组中一段连续的子序列,并且这段子序列是非递增或者非递减排序的.牛牛有一个长度为n的整数数组A,他现在有一个任务是把数组A分为若干段排序子序列,牛牛想知道他最少可以把这个数 ...