pandas dataframe.apply() 实现对某一行/列进行处理获得一个新行/新列

摘要:
焦点:dataframe Apply(function,axis)对一行或一列执行一些操作(axis=1表示对一列进行操作。此时,Apply函数每次都会将一行数据帧传递给函数,然后获取返回值,并将其放入一个序列中)python以删除空格:string。trip()要解决:dataframe应该如何使用assign()?(1) 读入数据后,首先删除城市名称列中的空格

重点:
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() 实现对某一行/列进行处理获得一个新行/新列》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇Mac之brew使用java绘制数据表格并导出为图片格式下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

pandas 几种获取dataframe列名的方式

1)通过columns字段获取,返回一个numpy类型的array print(df_data.columns.values) 2)通过list表列出 print(list(df_data)) 3)df.columns返回index,通过tolist()或者list(df.columns)转换为list类型 print(df_data.columns.to...

编程作业3.2:前馈神经网络

题目 上周使用了多类logistic回归,然而logistic回归不能形成更复杂的假设,因为它只是一个线性分类器。 在本次练习中,将使用前馈神经网络来识别手写数字(从0到9)。数据依然是MNIST手写体数据集,这里包含了5000个训练样本。 之前用了逻辑回归进行多元分类,这次用前馈神经网络进行预测。神经网络可以实现非常复杂的非线性的模型。我们将利用已经训...

干货: 可视化项目实战经验分享,轻松玩转 Bokeh (建议收藏)

作者 | Will Koehrsen 翻译 | Lemon 译文出品 | Python数据之道 (ID:PyDataRoad) 本文通过一个项目案例,详细的介绍了如何从 Bokeh 基础到构建 Bokeh 交互式应用程序的过程,内容循序渐进且具有很高的实用性。本文共有两万字左右,属于纯干货分享,强烈推荐大家阅读后续内容。 如果觉得内容不错,欢迎关注『P...

Pandas系列教程(3)Pandas数据查询

Pandas数据查询pandas 查询数据的几种方法 df.loc方法,根据行,列的标签值查询 df.iloc方法,根据行,列的数字位置查询 df.where方法 df.query方法 .loc即可以查询,又能覆盖雪茹,强烈推荐 pandas 使用df.loc查询数据的方法 使用单个label值查询数据 使用值列表批量查询 使用数值区间进行范围查询...

Pandas 查询示例 Pandas .query() 方法过滤数据 数据帧中类似 SQL 的查询

Python 是一种用于进行数据分析的出色语言,主要是因为以数据为中心的 Python 包的奇妙生态系统。Pandas是使导入和分析数据更容易的软件包之一。 分析数据需要大量的过滤操作。Pandas 提供了许多过滤数据框的方法,它Dataframe.query()就是其中之一。 注意极客!通过Python 编程基础课程巩固您的基础并学习基础知识。 首先...

spark SQL之 DataFrame使用

pom.xml中 <!-- https://mvnrepository.com/artifact/com.google.guava/guava --> <dependency> <groupId>com.google.guava</groupId> <artifactId...