我正在尝试对 2 个地理数据框进行空间连接。
\n\n两个索引都是这种类型:\nRangeIndex(start=0, stop=312, step=1)
\n\n我收到以下错误:
\n\n---------------------------------------------------------------------------\nValueError Traceback (most recent call last)\n<ipython-input-228-d0d0190e2940> in <module>()\n----> 1 Sales_new_data_concastinate_SR_coundaries_joines=gpd.sjoin(Sales_new_data_concastinated,SR_locations, op=\'within\',how=\'left\')\n\n~/anaconda3/lib/python3.7/site-packages/geopandas/tools/sjoin.py in sjoin(left_df, right_df, how, op, lsuffix, rsuffix)\n 51 or any(right_df.columns.isin([index_left, index_right]))):\n 52 raise ValueError("\'{0}\' and \'{1}\' cannot be names in the frames being"\n---> 53 " joined".format(index_left, index_right))\n 54 \n 55 # the rtree spatial index only allows limited (numeric) index types, but an\n\nValueError: \'index_left\' and \'index_right\' cannot be names in the frames being joined\nRun Code Online (Sandbox Code Playgroud)\n\n来源https://github.com/geopandas/geopandas/blob/master/geopandas/tools/sjoin.py
\n\n说: …
同时将行附加到 mysql 表与熊猫to_sql一样
df.to_sql('table_name', engine, if_exists='append')
Run Code Online (Sandbox Code Playgroud)
附加df可能包含一些新列,在 mysql 中不存在table_name,
所以,我被 pymysql.err.InternalError 触发了:
InternalError: (pymysql.err.InternalError) (1054, "Unknown column 'new_columns' in 'field list'")
Run Code Online (Sandbox Code Playgroud)
在尝试捕获此异常以添加new column到 mysql 表时,pymysql.err.InternalError由于某种原因我无法捕获异常,因此我尝试以一种奇怪的方式执行BaseException以下操作:
while True:
try:
df.to_sql(table_name, engine, if_exists='append')
except BaseException as e:
b = e.args
missing_column = b[0].split('(pymysql.err.InternalError) (1054, "Unknown column \'')[1].split(' in \'field list\'")')[0].replace("'",'')
with sql.engine.connect() as con:
con.execute(f'ALTER TABLE {table_name} ADD COLUMN {missing_column} TEXT;')
else: break
Run Code Online (Sandbox Code Playgroud)
这个解决方案既丑陋又不稳定,所以我很感激你的建议!
即使我的问题如何在 python 中创建一个围绕坐标 5 英里的精确缓冲区有答案?,但我不能代表它。
我有一系列标准经纬度格式的位置,需要计算 buffer米它们。
这些地点来自葡萄牙,所以我在crs这里选择了“正确” :https : //epsg.io/3763,即epsg:3763
gdf = gpd.GeoDataFrame(df, geometry=gpd.points_from_xy(df['latitude'], df['longitude']),
crs={'init' :'epsg:3763'})
gdf['radius'] = gdf.geometry.buffer(50)
Run Code Online (Sandbox Code Playgroud)
根据上面的答案,这应该给我以米为单位的指定半径周围的多边形,但实际上以度为单位返回半径。
我知道,这应该很简单,但我仍然很困惑。谢谢!
在将一些外部模块方法应用于类时,我需要能够将不同的对传递arg = 'value'给函数,例如:
Ad.nodes.get(id_ = '11974312')
Run Code Online (Sandbox Code Playgroud)
如何将dicts或元组传递给函数,以便在(元组)或(字典)中将('id_'字符串)识别为id_(参数
)?('id_', '11974312'){'id_':'11974312'}
基本上,我只需要id_离开'id_'
供您参考,我正在尝试将neomodel模块用于neo4j图形数据库.