我已经分割了道路数据,如下所示:
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/