pandas dataframe.apply() 实现对某一行/列进行处理获得一个新行/新列
重点:
dataframe.apply(function,axis)对一行或一列做出一些操作(axis=1则为对某一列进行操作,此时,apply函数每次将dataframe的一行传给function,然后获取返回值,将返回值放入一个series)
python去空格:字符串.strip()
待解决:
dataframe.assign()应该怎么用?
(1)读入数据后先把 城市 那一列城市名中的空格去掉
对一列数据去空格的方法:
def qukong(hang):
return hang['city'].strip()
dataframe['city']=dataframe.apply(qukong,axis=1) # axis=1表示对每一行做相同的操作
dataframe
###dataframe.apply用于对一行或一列做一些相同的操作
(2)调用百度地图API查询各城市经纬度(查询出的结果我们用dict保存)
def p2l(name):
# 1、设置url和3个参数(输出格式,key,要翻译的地址)
url = 'http://api.map.baidu.com/geocoder/v2/'
output = 'json'
ak = 'sXZHPZahdMeK3Gy3uC7ZeRQrVbZDnP1G'
address = quote(name)
# 2、拼接get请求(url?参数1=值1&参数2=值2&参数3=值3)
request = url + '?' + 'address=' + address + '&output=' + output + '&ak=' + ak
# 3、urlopen发送请求,获得response
response_file = urlopen(request)
# 4、读取response字符串
response_str = response_file.read().decode()
# 5、str转json
response_json = json.loads(response_str)
# 6、读json
lat=response_json['result']['location']['lat']
lng=response_json['result']['location']['lng']
return [lat,lng]
list_place=list(set(dataframe['city']))
dict_loc={}
for elem in list_place:
dict_loc[elem]=p2l(elem)
dict_loc
(3)将查询到的经纬度放入dataframe中
def add_lat(hang):
return dict_loc[hang['city']][0]
def add_lng(hang):
return dict_loc[hang['city']][1]
dataframe['city_lat']=dataframe.apply(add_lat,axis=1)
dataframe['city_lng']=dataframe.apply(add_lng,axis=1)
(4)从dataframe的日期一列中提取出 年、月、日 三个新列
def add_year(hang):
date=hang['date']
tmplist=date.split('/')
return tmplist[0]
def add_month(hang):
date=hang['date']
tmplist=date.split('/')
return tmplist[1]
def add_day(hang):
date=hang['date']
tmplist=date.split('/')
return tmplist[2]
dataframe['year']=dataframe.apply(add_year,axis=1)
dataframe['month']=dataframe.apply(add_month,axis=1)
dataframe['day']=dataframe.apply(add_day,axis=1)
(5)获取星期几
from datetime import datetime,date
dayOfWeek = datetime.now().weekday()
print dayOfWeek
dayOfWeek = datetime.today().weekday()
print dayOfWeek
datetime类的weekday()方法可以获得datetime是星期几,注意weekday() 返回的是0-6是星期一到星期日
pandas dataframe.apply() 实现对某一行/列进行处理获得一个新行/新列的更多相关文章
- pandas DataFrame apply()函数(2)
上一篇pandas DataFrame apply()函数(1)说了如何通过apply函数对DataFrame进行转换,得到一个新的DataFrame. 这篇介绍DataFrame apply()函数 ...
- 螺旋填数:读入两个整数m,n,输出一个m行n列的矩阵,这个矩阵是1~m*n这些自然数按照右、下、左、上螺旋填入的结果。
package Day8_06; /*读入两个整数m,n,输出一个m行n列的矩阵,这个矩阵是1~m*n这些自然数按照右.下.左.上螺旋填入的结果. * 例如读入数字4,5,则输出结果为: * 1 2 ...
- pandas DataFrame apply()函数(1)
之前已经写过pandas DataFrame applymap()函数 还有pandas数组(pandas Series)-(5)apply方法自定义函数 pandas DataFrame 的 app ...
- 【C语言】请输入一个n(n<=10)并输出一个n行n列的杨辉三角
应用二维数组的知识 杨辉三角特点: 1.第一列和对角线的元素全部为1 2.其他元素等于上一行的当前列的值和上一行中当前列前边一列的值之和 #include<stdio.h> #define ...
- Mysql 列转行group_concat函数,与行转列
1.正常情况. SELECT JoinEventIds from nt_mainnum 2.使用group_concat函数 select group_concat(JoinEventIds) fro ...
- 编写一个函数,在页面上输出一个N行M列的表格,表格内容填充0~100的随机数字
function print(n,m){ document.write("<table>"); for(var i=0; i<n; i++){ ...
- 编写一段代码,打印一个M行N列的二维数组转置。(交换行和列)
import edu.princeton.cs.algs4.*; public class No_1_1_13 { public static void main(String[] args) { i ...
- 【338】Pandas.DataFrame
Ref: Pandas Tutorial: DataFrames in Python Ref: pandas.DataFrame Ref: Pandas:DataFrame对象的基础操作 Ref: C ...
- pandas.DataFrame的pivot()和unstack()实现行转列
示例: 有如下表需要进行行转列: 代码如下: # -*- coding:utf-8 -*- import pandas as pd import MySQLdb from warnings impor ...
随机推荐
- SPOJ VLATTICE Visible Lattice Points 莫比乌斯反演 难度:3
http://www.spoj.com/problems/VLATTICE/ 明显,当gcd(x,y,z)=k,k!=1时,(x,y,z)被(x/k,y/k,z/k)遮挡,所以这道题要求的是gcd(x ...
- Jquery倒计时源码分享
在静态页添加显示倒计时的容器,并引用下面脚本,代入时间参数即可使用. timeoutDate——到期时间,时间格式为2014/01/01或2014/1/1 D——天 H——小时 M——分钟 S——秒 ...
- 导入arr包
提起项目的aar包 导入目标项目中 添加依赖
- git一键提交修改文件
git一键提交修改文件 首先安装git, 有git bash: 新建一个gitcmt文件,放置于与你的项目同级的目录里: 使用:打开git bash, 方法1. git pull\git status ...
- composer update 提示 username
解决办法 暂时修改composer.json "repositories": { "packagist": { "type": " ...
- CentOS7进程管理systemd详解
概述: 系统启动过程中,当内核启动完成,后加载根文件系统,后就绪的一些用户空间的服务的管理工作,就交由init进行启动和管理,在CentOS6之前的init的管理方式都类似,相关的内容我们在之前的 ...
- LG4719 【模板】动态dp 及 LG4751 动态dp【加强版】
题意 题目描述 给定一棵\(n\)个点的树,点带点权. 有\(m\)次操作,每次操作给定\(x,y\),表示修改点\(x\)的权值为\(y\). 你需要在每次操作之后求出这棵树的最大权独立集的权值大小 ...
- Django中MySQL读写分离技术
最近需要用到Django的MySQL读写分离技术,查了一些资料,把方法整理了下来. 在Django里实现对MySQL的读写分离,实际上就是将不同的读写请求按一定的规则路由到不同的数据库上(可以是不同类 ...
- logback日志分开纪录
LogBack 日志 文件分开纪录 在处理Log中,我们一般讲Log分为一下几类,Debug类型,Error类型,Info类型 等等.. 那么使用LogBack如何分开日志处理 代码如下: 当然也可以 ...
- cocos2d-x 3.0 场景切换特效汇总(转)
cocos2d-x 3.0中场景切换特效比较多,而且游戏开发中也经常需要用到这些特效,来使场景切换时不至于那么干巴,遂这里汇总一下,开发中使用. 场景切换用到导演类Directory,大多数用的都是替 ...