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

标签 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]
})

>>> 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

最佳答案

试试这个!

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

关于python - 如何使用 Pandas 类似于 GIS 溶解操作来汇总 Python 中的分段道路数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55548610/

相关文章:

python - 减少程序生成随机数据的运行时间

python - scipy.optimize.curve_fit : Default value of max_nfev broken?

用于使用请求模块登录网站的 Python 3 脚本

python - 如何在for循环中使用占位符?

python - 使用计数将条件排除应用于 Pandas DataFrame

python - .htaccess 与 python 脚本

python - RNN LSTM 输入形状应该是什么?

python - 一个数字在 numpy 数组中出现了多少次

python-3.x - Pandas 数据框使用列逻辑删除重复行

python - 如何重写此代码以使其更易于阅读?