python自动化之pandas库--同值分组合并多个单元格于一个单元格并用分隔符分隔

文章目录

  • 1.场景:
  • 2.问题描述
  • 3.运行环境
  • 4.运行代码
  • 5.小结:

1.场景:

摘要:变更调查外业举证图斑编号挂接
每年都要进行变更调查的工作,外业举证,内业处理相当耗时间,现为提高变更调查工作内业效率,编写此程序。


2.问题描述

摘要:同一个图斑可能涉及到挂接多个编号的问题:
由于国家下发图斑与内业自主变更图斑有可能会存在重叠的情况,就意味着同一个地类图斑可能会需要挂接多个举证编号,并用“/”分隔开。看图就明白意思了:

原始表格
python自动化之pandas库--同值分组合并多个单元格于一个单元格并用分隔符分隔_第1张图片
整理后的表格
python自动化之pandas库--同值分组合并多个单元格于一个单元格并用分隔符分隔_第2张图片
但是我发现一个问题,要是有空间位置的话可以使用Arcgis的Spatial Join实现,但若是没有空间位置,仅根据属性表进行挂接的话就有点麻烦了,使用VB也行,但是我不会。于是我就想用python实现一下这个功能。

本程序的代码很简单,仅有几行,效果还是不错的。

3.运行环境

就本人的运行环境简要介绍一下:

编译环境及程序配置
1.Microsoft Visual Studio Code
2.Python 3.9.1
3.pandas ==> 1.2.5
2.Microsoft office 2019

4.运行代码

废话不多说,直接上代码:

# 测试数据  test_Excel合并行.xlsx

BSM	JCBH
DLTB000001	A102
DLTB000002	A103
DLTB000003	A104
DLTB000003	A105
DLTB000005	BB106
DLTB000003	A107
DLTB000007	A108
DLTB000002	IIZ109
DLTB000009	A110
DLTB000011	A111
DLTB000005	A112
DLTB000012	A113
DLTB000006	A114


import pandas as pd

# 读取 Excel 表格
df = pd.read_excel(r"G:\test_Excel合并行.xlsx")

#用于存放处理的结果
result=pd.DataFrame()

# 对BSM列内容分组
grouped = df.groupby('BSM')

# 使用自定义函数聚合列'JCBH'中的值,并用“/”分隔开
result["JCBH_Merged"]= grouped['JCBH'].agg(lambda x: '/'.join(x.astype(str)))

#print (result["Merged"])
result.to_excel('merged.xlsx')
print ("Done!")

5.小结:

轻松解决问题。
这个问题有以下几个关键点:
a.使用groupby()函数的使用
b.自定义聚合函数agg()的使用
c.匿名函数lambda()函数的使用

感兴趣的小伙伴可以整理一下这三个函数的适用方法,到时@我,我会去给你点赞的哦!!


你可能感兴趣的:(python学习手记,pandas,python,自动化)