如何使用Pandas类似于GIS解析操作来汇总Python中的分段道路数据?

问题描述 投票:1回答:1

我有分段的道路数据,如下所示:

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中执行此操作,称为Dissolve Route Events。我想用Pandas来完成这项任务。这是所需的输出:

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
python python-3.x pandas gis
1个回答
1
投票

试试这个!

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

© www.soinside.com 2019 - 2024. All rights reserved.