GeoPandas 笔记:合并数据

news2024/11/16 20:29:46

很多地方和 pandas 笔记:合并操作_pandas 表格判断行空则合并行居中_UQI-LIUWJ的博客-CSDN博客是类似的

1  导入数据

import geopandas
import pandas as pd
world = geopandas.read_file(geopandas.datasets.get_path('naturalearth_lowres'))
world

cities = geopandas.read_file(geopandas.datasets.get_path('naturalearth_cities'))
cities

 1 concat (使用的是Pandas的concat)

pd.concat([world,cities])

2 属性的merge

  • 通过使用merge()方法实现。
  • 如果一个DataFrame在左参数中,而GeoDataFrame在右参数中,结果将不再是一个GeoDataFrame。

2.0 涉及的数据 

country_shapes = world[['geometry', 'iso_a3']]
country_shapes

country_names = world[['name', 'iso_a3']]
country_names

 

 2.1 返回的数据类型比较

country_shape是GeoDataFrame;country_name是DataFrame

type(country_shapes.merge(country_names, on='iso_a3'))
#geopandas.geodataframe.GeoDataFrame

type(country_names.merge(country_shapes, on='iso_a3'))
#pandas.core.frame.DataFrame

2.2 merge操作

country_shapes.merge(country_names, on='iso_a3')

 

country_names.merge(country_shapes, on='iso_a3')

 3 空间的join

3.1 sjoin

GeoDataFrame.sjoin()有四个参数:how和predicate

3.1.1 how

见pandas 笔记:合并操作_pandas 表格判断行空则合并行居中_UQI-LIUWJ的博客-CSDN博客的3.3小节

唯一的不同是,没有outer

3.1.2 predicate

  • 指定geopandas如何根据几何关系来决定是否将一个对象的属性与另一个对象连接。
    • intersects 交叉

      • 如果对象的边界或内部以任何方式与另一个对象的边界或内部相交,则返回True。

      • 换句话说,如果几何对象具有任何公共的边界或内部点,则它们相交。

    • contains 包含

      • 如果另一个对象的任何点都不位于对象的外部,且另一个对象的至少一个内部点位于对象的内部,则返回True。

      • ithin()的反函数。表达式a.contains(b) == b.within(a)始终计算为True。

    • within 在。。。中

      • 如果对象的边界和内部仅与另一个对象的内部(而不是其边界或外部)相交,则返回True

    • touches 相切?

      • 如果对象具有至少一个共同点且它们的内部不与另一个对象的任何部分相交,则返回True。

    • crosses  (三维的交叉)

      • 如果对象的内部与另一个对象的内部相交但不包含它,并且交集的维数小于其中一个或另一个的维数,则返回True。

    • overlaps (三维的重叠)

      • 如果几何体共有多个但不是全部的公共点,维数相同,并且几何体内部的交集的维数与几何体本身的维数相同,则返回True

3.1.3 lsuffix

  • 如果merge之后,某一个column的名字冲突了,那么在左边GeoDataFrame原先Column名字的右边加上_lsuffix
  • 默认为left

3.1.4 rsuffix

  • 如果merge之后,某一个column的名字冲突了,那么在右边GeoDataFrame原先Column名字的右边加上_lsuffix
  • 默认为right

 3.2  sjoin_nearest

GeoDataFrame.sjoin_nearest(right, 
        how='inner', 
        max_distance=None, 
        lsuffix='left', 
        rsuffix='right', 
        distance_col=None)

基于几何体之间的距离将两个GeoDataFrame进行空间连接。

结果将包括单个输入记录的多个输出记录,其中存在多个等距离最近或相交邻居。

3.2.1 两个额外的参数

  • max_distance
    • 指定匹配几何图形的最大搜索半径。
    • 这在某些情况下可能会对性能产生相当大的影响
  • distance_col
    • 如果设置了distance_col,结果GeoDataFrame将包含一个名为distance_col的列,其中包含输入几何图形与最近几何图形之间计算的距离。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/438663.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

《快速掌握PyQt5》专栏整理成书出版啦!

首先非常感谢大家对《快速掌握PyQt5》专栏的喜爱与支持!该专栏现已整理成书出版,书名为《PyQt编程快速上手》。 本书内容在专栏内容的基础上进行了多方面的优化,内容更加丰富,知识点布局更加合理,代码和解释也更加简洁…

Zookeeper源码分析——ZK选举源码解析

ZK选举源码解析 Zookeeper选举机制——第一次启动 Zookeeper选举机制——非第一次启动 ZK选举源码解析 ZK选举准备源码解析 public synchronized void start() {if (!getView().containsKey(myid)) {throw new RuntimeException("My id " myid " not in the …

Camunda流程引擎 Modeler (二)

Camunda Modeler是Camunda官方提供的建模器: Modeler - 独立安装的建模器([windows、linux、mac] 一、下载camunda-modeler Download The Camunda BPMN / DMN Process Modeler | Camunda Release v5.10.0 camunda/camunda-modeler GitHubAn integrate…

深度强化学习【1】-强化学习入门必备基础(含Python迷宫游戏求解实例)

强化学习入门必备基础 文章目录 强化学习入门必备基础1. 强化学习与机器学习1.1 有监督学习1.2 半监督学习1.3 无监督学习1.4 强化学习1.5 深度学习 2. 强化学习中的一些概念2.1 智能体、动作、状态2.2 策略函数、奖励2.3 状态转移2.4 智能体与环境的交互过程2.5 折扣奖励2.6 动…

【Leetcode -21.合并两个有序链表 -83.删除排序链表中的重复元素】

Leetcode Leetcode-21.合并两个有序链表Leetcode-83.删除排序链表中的重复元素 Leetcode-21.合并两个有序链表 题目:将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。 示例 1: 输入:l1 […

CUDA编程一天入门

目录 0 环境准备 1 套路 2 并行执行内核设置 3 示例代码simpleTexture3D 4 参考链接 0 环境准备 1 套路 CUDA 编程模型是一个异构模型,其中同时使用 CPU 和 GPU。在 CUDA 中,主机是指 CPU 及其内存,而设备是指 GPU 及其内存。在主机…

Prophet学习(三)饱和的预测与饱和最低

目录 饱和的预测(Forecasting Growth) 饱和最低(Saturating Minimum) 饱和的预测(Forecasting Growth) 默认情况下,Prophet使用线性模型进行预测。在预测增长时,通常有一个最大可达…

Ubuntu22.04lts NVIDIA驱动安装

1. NVIDIA驱动安装 1.1 手动安装 驱动下载地址:NVIDIA Driver Downloads 注意要在文本模式安装,进入文本模式的方法:sudo init 3。 返回图形化界面的方法sudo init 5 安装时报错: 安装NVIDIA驱动(手动安装NVIDIA-L…

两种方式,轻松实现ChatGPT联网

两种方式效果: 方式一:浏览器搜索内嵌插件 方式二:官方聊天页内嵌插件 首先,要有一个谷歌浏览器,然后再安装一个叫ChatGPT for Google,直接在谷歌里搜一下就能找,也可以Chrome应用商店里搜索&a…

SAP批次主数据增强屏幕增强<转载>

原文链接:https://blog.csdn.net/hustliangchen/article/details/111163361 msc1n/msc2n/msc3n 批次增强 这几个事务码的主程序为SAPLCHRG,在如下图界面上有两块地方是可以做增强所预留的子屏幕,其中2是一个tab页签的子屏幕。注意版本较老的…

AI企划-《大明镇抚司到此一游》商业计划书

结合中国文化和当地资源打造的独特旅游产品 一、项目概述 本项目旨在利用中国文化特色,结合新西兰当地资源和市场需求,打造一款独特的旅游产品——“大明镇抚司到此一游”网红打卡点。该打卡点以大明镇抚司为主题,以大明小龙虾美食为特色&am…

千亿市场!低代码平台极大提升企业应用开发效率,颠覆传统模式!

背景 低代码平台的5个核心亮点: 可视化的表单设计; 2.可视化的审批流,逻辑流设计; 3.可视化的BI图标设计; 4.可视化的以应用为中心的开放和集成接口设计; 5.以应用为中心,依托于云原生技术的快…

线性表,栈和队列

什么是线性表? 线性表是由n个相同类型的数据元素组成的有限序列,它是最基本的一种线性结构。顾名思义,线性表就像是一条线,不会分叉。线性表有唯一的开始和结束,除了第一个元素外,每个元素都有唯一的直接前…

docker容器:docker资源管理

目录 一、docker资源控制 1、资源控制工具 2、设置CPU使用率上限 3、CPU压力测试 4、Cgroups限制cpu使用率 5、查看容器运行状态 6、 配置容器指定CPU 7、限制容器内存使用 8、对磁盘IO配额控制(blkio)的限制 二、docker数据管理 1、数据管理…

量子退火算法入门(7):如何QUBO中的三次多项式怎么转换?

文章目录 前言一、三次多项式的例题二、Python实现1.引入库 总结 前言 本文还是大部分截图来自于:《最適化問題とWildqatを用いた量子アニーリング計算入門》 https://booth.pm/ja/items/1415833 终于有人问到怎么将QUBO中的三次多项式转换为二次多项式了。直接以…

购物车--购物车模块完善

很明显,之前的购物车模块功能的实现不够完善,缺少一个删除购物车中产品的操作,针对此我们加一个删除功能。 1、写负责删除的servelt类 2、然后我们给购物车页面的jsp添加超链接传递目标id 搞定。

王道计组(23版)1_计算机系统概述

1.计算机发展历程 硬件的发展: 电子管、晶体管、中小规模集成电路、超大规模集成电路 摩尔定律: 价格不变时,每18个月,集成电路可容纳的晶体管数量和性能增加一倍 微型计算机的发展以微处理器技术为标志 计算机体系结构&#xf…

u盘里的文件被自动删除了怎么办?五种数据恢复方案

u盘是我们日常生活中常常用到的一种便携式存储设备,可以帮助我们存储和携带大量的文件信息。但是,使用过程中难免会遇到一些问题,例如u盘会自己删除文件的情况,如果你遇到了这种情况,该怎样找回u盘自己删除的文件呢&am…

程序猿眼中的协议:TCP / IP 五层网络模型

哈喽,大家好~我是你们的老朋友: 保护小周ღ,本期为大家带来的是 网络基础原理中的 TCP / IP 五层网络模型,主要从协议的概念,网络模型,数据分层传输的流程,几个方面讲解,看完之后可以…

jdk-FuteureForkJoin框架源码学习

背景 日常的计算任务大部分都是串行来执行,但是如果一个复杂的任务需要进行拆分为多个小任务,那么以往是自行写一个递归或者循环计算等算法来实现,随着这类需求的提升,java7中引入了ForkJoin框架来支持这类计算,可以比…