小编Dmi*_*kin的帖子

GEOPANDAS .sjoin 'index_left' 和 'index_right' 不能是正在连接的帧中的名称

我正在尝试对 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\n
Run Code Online (Sandbox Code Playgroud)\n\n

来源https://github.com/geopandas/geopandas/blob/master/geopandas/tools/sjoin.py

\n\n

说: …

python python-3.x geopandas

11
推荐指数
1
解决办法
1万
查看次数

to_sql 如果不存在则添加列(sqlalchemy mysql)

同时将行附加到 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)

这个解决方案既丑陋又不稳定,所以我很感激你的建议!

sqlalchemy pandas

5
推荐指数
1
解决办法
601
查看次数

将正确的投影 crs 设置为 geodataframe 以米为单位进行计算

即使我的问题如何在 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)

根据上面的答案,这应该给我以米为单位的指定半径周围的多边形,但实际上以度为单位返回半径。

我知道,这应该很简单,但我仍然很困惑。谢谢!

proj geopandas

1
推荐指数
1
解决办法
2481
查看次数

如何将字符串转换为参数?

在将一些外部模块方法应用于类时,我需要能够将不同的对传递arg = 'value'给函数,例如:

Ad.nodes.get(id_ = '11974312')
Run Code Online (Sandbox Code Playgroud)

如何将dicts或元组传递给函数,以便在(元组)或(字典)中将('id_'字符串)识别为id_(参数 )?('id_', '11974312'){'id_':'11974312'}

基本上,我只需要id_离开'id_'

供您参考,我正在尝试将neomodel模块用于neo4j图形数据库.

python

-1
推荐指数
1
解决办法
91
查看次数

标签 统计

geopandas ×2

python ×2

pandas ×1

proj ×1

python-3.x ×1

sqlalchemy ×1