我试图找出点是否在闭合多边形中(在这个问题中:查找数据框中的点是否在多边形中,并为点指定多边形名称),但我意识到可能有另一种方法可以做到这一点:
我有这个数据框
df=
id x_zone y_zone
0 A1 65.422080 48.147850
1 A1 46.635708 51.165745
2 A1 46.597984 47.657444
3 A1 68.477700 44.073700
4 A3 46.635708 54.108190
5 A3 46.635708 51.844770
6 A3 63.309560 48.826878
7 A3 62.215572 54.108190
我想把它转换成
id Polygon
0 A1 POLYGON((65.422080, 48.147850), (46.635708, 51.165745), (46.597984, 47.657444), (68.477700, 44.073700))
1 A3 POLYGON((46.635708,54.108190), (46.635708 ,51.844770), (63.309560, 48.826878),(62.215572 , 54.108190))
对积分也这样做:
df1=
item x y
0 1 50 49
1 2 60 53
2 3 70 30
到
item point
0 1 POINT(50,49)
1 2 POINT(60,53)
2 3 POINT(70,30)
我从来没有使用过geopandas,在这里有点不知所措。
因此,我的问题是:如何从pandas数据帧到具有geopandas属性的数据帧?
感谢你的洞察力!
我建议以下方法直接从df获取GeoDataFrame:
from shapely.geometry import Polygon
import geopandas as gpd
gdf = gpd.GeoDataFrame(geometry=df.groupby('name').apply(
lambda g: Polygon(gpd.points_from_xy(g['x_zone'], g['y_zone']))))
它首先使用geopandas'points_from_xy
创建一个点列表,然后从这个列表中创建一个Polygon对象。
您可以实现如下目的,但必须设置正确的数据类型。我知道在ArcGIS中,必须将数据类型设置为几何体;
df.groupby('id').apply(lambda x: 'POLYGON(' + str(tuple(zip(x['x_zone'],x['y_zone'])))+')')
问题内容: 我正在使用导入以下的CSV文件: CSV文件示例: 问题是,当我稍后在代码中尝试使用这些值时,出现此错误: 错误是因为我要使用的数字不是用点()作为小数点分隔符而是用逗号()书写。手动将逗号更改为点后,我的程序可以工作。 我无法更改输入格式,因此必须替换DataFrame中的逗号才能使代码正常工作,我希望python无需手动执行此操作。你有什么建议吗? 问题答案: 为此有一个参数:do
问题内容: 我正在尝试将Pandas DF转换为Spark one。DF头: 码: 我得到一个错误: 问题答案: 您需要确保您的pandas dataframe列适合spark推断的类型。如果您的熊猫数据框列出类似以下内容: 而且您遇到该错误,请尝试: 现在,确保实际上是您希望这些列成为的类型。基本上,当底层Java代码尝试从python中的对象推断类型时,它会使用一些观察值并做出猜测,如果该猜测
问题内容: 我有如下的Python字典: 键是Unicode日期,值是整数。我想通过将日期及其对应的值作为两个单独的列将其转换为pandas数据框。示例:col1:日期col2:DateValue(日期仍为Unicode,日期值仍为整数) . 对此方向的任何帮助将不胜感激。我找不到有关熊猫文档的资源来帮助我。 我知道一种解决方案可能是将此dict中的每个键值对转换为dict,以便整个结构成为dic
问题内容: 我试图将输出转换为熊猫数据框,但我很努力。我有这个清单 我想创建一个具有3列和3行的熊猫数据框。我尝试使用 但它似乎对我不起作用。任何帮助,将不胜感激。 问题答案: 您需要转换为然后:
问题内容: 我希望从该网站的mma 数据中抓取数据并解析一些highcharts表。我单击的链接与selenium,然后切换到图表。我转到该站点,然后在Artem Lobov行的Pinnacle列中单击+420。这将创建一个弹出图表。然后,我切换到活动元素。我想捕获由highcharts绘制的图形以响应点击。 我以以下方式使用selenium: 我能够单击链接并获得图表,但我对highcharts
问题内容: 今天,我的同事要求我将数据从垂直登台表转换为水平表。我的意思是将行转换为列。我使用了PIVOT并解决了它。但是遇到了这样的情况:如果数据字段重复自身,则在移动数据时会遇到麻烦。 这是我正在处理的测试数据: 我使用PIVOT将行数据显示为列: 输出为: 但他希望输出如下: 最重要的是,登台表中可以有多个CHILD属性。我们需要考虑这一点,并将所有儿童移动到列中。 这可能吗? 问题答案: