pandas dataframe.apply() 实现对某一行/列进行处理获得一个新行/新列
2018-01-24 20:30 ZealouSnesS 阅读(41519) 评论(0) 编辑 收藏 举报重点:
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是星期一到星期日
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· 写一个简单的SQL生成工具
· AI 智能体引爆开源社区「GitHub 热点速览」
· C#/.NET/.NET Core技术前沿周刊 | 第 29 期(2025年3.1-3.9)