我正试图整理一组关于冰川的有用数据。我们的原始数据来自一个ArcGIS数据集,纬度/经度值存储在一个单独的文件中,现在与所有数据一起从CSV中分离出来。我正在尝试将纬度/经度文件与我们的数据集合并。以下是文件外观的预览。
这是我的主要数据集文件,glims (为了清晰起见删除的列)。
| ANLYS_ID | GLAC_ID | AREA |
|----------|----------------|-------|
| 101215 | G286929E46788S | 2.401 |
| 101146 | G286929E46788S | 1.318 |
| 101162 | G286929E46788S | 0.061 |
这是经纬度文件,坐标。
| lat | long | glacier_id |
|-------|---------|----------------|
| 1.187 | -70.166 | G001187E70166S |
| 2.050 | -70.629 | G002050E70629S |
| 3.299 | -54.407 | G002939E70509S |
问题是,坐标数据帧对于每一个纬度经度的冰川id都有一行,而我的glims数据帧对于每个冰川id有多行数据,每个条目的数据不同。
根据两个数据帧之间的匹配glacier_id,我需要主数据文件中的每个条目都有一个纬度-经度值。
这是我到目前为止尝试过的。
glims = pd.read_csv('glims_clean.csv')
coordinates = pd.read_csv('LatLong_GLIMS.csv')
df['que'] = np.where((coordinates['glacier_id'] ==
glims['GLAC_ID']))
错误返回:“int”对象不可订阅
以及:
glims.merge(coordinates, how='right', on=('glacier_id', 'GLAC_ID'))
错误返回: int‘object没有属性'merge’
我不知道怎么处理这么大的合并。我也害怕犯错误,因为几乎不可能捕捉到错误,因为这些数据没有其他识别因素。
任何指导都会很棒的,谢谢。
发布于 2019-04-23 18:28:42
这应该能行
glims = glims.merge(coordinates, how='left', left_on='GLAC_ID', right_on='glacier_id')
发布于 2019-04-23 18:07:27
这是一个典型的合并问题。一种解决方法是使用直接loc
和索引匹配。
glims = glims.set_index('GLAC_ID')
glims.loc[:, 'lat'] = coord.set_index('glacier_id').lat
glims.loc[:, 'long'] = coord.set_index('glacier_id').long
glims = glims.reset_index()
您也可以使用pd.merge
pd.merge(glims,
coord.rename(columns={'glacier_id': 'GLAC_ID'}),
on='GLAC_ID')
https://stackoverflow.com/questions/55821361
复制相似问题