如何使用类似于GIS溶解操作的Pandas在Python中总结分段道路数据?
我对道路数据进行了分段,如下所示:如何使用类似于GIS溶解操作的Pandas在Python中总结分段道路数据?,python,python-3.x,pandas,gis,Python,Python 3.x,Pandas,Gis,我对道路数据进行了分段,如下所示: import pandas as pd input_df = pd.DataFrame({ 'ROUTE': ['US9', 'US9', 'US9', 'US9', 'US9'], 'BMP': [0.0, 0.1, 0.2, 0.3, 0.4], 'EMP': [0.1, 0.2, 0.3, 0.4, 0.5], 'VALUE': [19, 19, 232, 232, 19] }) >>> pr
import pandas as pd
input_df = pd.DataFrame({
'ROUTE': ['US9', 'US9', 'US9', 'US9', 'US9'],
'BMP': [0.0, 0.1, 0.2, 0.3, 0.4],
'EMP': [0.1, 0.2, 0.3, 0.4, 0.5],
'VALUE': [19, 19, 232, 232, 19]
})
>>> print(input_df)
BMP EMP ROUTE VALUE
0.0 0.1 US9 19
0.1 0.2 US9 19
0.2 0.3 US9 232
0.3 0.4 US9 232
0.4 0.5 US9 19
BMP
列表示该属性沿道路的线性参考GIS表示的起始里程点。EMP
是相关的终点里程。当VALUE列相等时,我希望合并相邻的段
在ArcGIS
中有一个工具可以执行此操作,名为。我想用熊猫来完成这项任务。以下是所需的输出:
output_df = pd.DataFrame({
'ROUTE': ['US9', 'US9', 'US9'],
'BMP': [0.0, 0.2, 0.4],
'EMP': [0.2, 0.4, 0.5],
'VALUE': [19, 232, 19]
})
>>> print(output_df)
BMP EMP ROUTE VALUE
0.0 0.2 US9 19
0.2 0.4 US9 232
0.4 0.5 US9 19
试试这个
input_df['trip'] = (input_df.VALUE.diff() != 0).cumsum()
output_df = input_df.groupby(['ROUTE','trip','VALUE']).agg({'BMP':'first','EMP':'last'})
output_df.reset_index()
#
ROUTE trip VALUE BMP EMP
0 US9 1 19 0.0 0.2
1 US9 2 232 0.2 0.4
2 US9 3 19 0.4 0.5
谢谢你!此解决方案也适用于分类数据。只需使用
input\u df['value']将value列转换为pandas类别类型。astype('category')
。然后使用input_df.VALUE.cat.codes.diff()0