43.提取子文本

李光朱课程 2024-04-23 02:15:16
案例导入

如下图,遍历每行数据,提取出省份或自治区,如甘肃省或新疆自治区;提取出市或自治州,如兰州市或昌吉自治州;提取出县或区,如木兰县或城关区。根据“省”、“市”、“县”等关键字在字符串中的位置进行提取,如甘肃省兰州市城关区,“省”、“市”和“区”分别为第3、6和9个字符,则第1-3个字符为省份,第4-6个字符为市,第7-9个字符为区。提取的数据添加在原数据后面,列名为“省(自治区)”、“市(自治州)”和“县(区)”。添加代码注释。

图1.原始数据

文心一言提示词

打开百度“文心一言”,输入提示词:“你是pandas专家,文件路径为:D:/Samples/提取省市县.xlsx。用pandas导入第1个工作表中的数据,只导入第1列"籍贯"数据,引擎为"openpyxl"。遍历每行数据,提取出省份或自治区,如甘肃省或新疆自治区;提取出市或自治州,如兰州市或昌吉自治州;提取出县或区,如木兰县或城关区。根据“省”、“市”、“县”等关键字在字符串中的位置进行提取,如甘肃省兰州市城关区,“省”、“市”和“区”分别为第3、6和9个字符,则第1-3个字符为省份,第4-6个字符为市,第7-9个字符为区。提取的数据添加在原数据后面,列名为“省(自治区)”、“市(自治州)”和“县(区)”。添加代码注释。”

显示结果如下:

为了完成这个任务,我们可以按照以下步骤来编写代码:

使用pandas库读取Excel文件。选择第1个工作表。提取第1列"籍贯"数据。遍历每行数据,按照关键字位置提取省份、市、县信息。将提取出的信息添加到原数据后面,并添加相应的列名。

下面是完整的Python代码实现,包括注释:

import pandas as pd# 设定文件路径file_path = 'D:/Samples/提取省市县.xlsx'# 使用pandas读取Excel文件,引擎为'openpyxl',并只选择第1个工作表df = pd.read_excel(file_path, sheet_name=0, engine='openpyxl', usecols=[0])# 给第1列"籍贯"设置列名df.columns = ['籍贯']# 初始化空列表,用于存储提取出的省份、市、县信息provinces = []cities = []counties = []# 遍历每行数据for index, row in df.iterrows(): origin = row['籍贯'] # 假设籍贯的格式为“省(自治区)市(自治州)县(区)”,并且“省”、“市”、“县”等关键字位置固定 # 根据实际数据格式,这里可能需要调整 if len(origin) >= 9: province = origin[0:3] city = origin[3:6] county = origin[6:9] else: # 如果籍贯字符串长度不够,可以设置为空或者进行其他处理 province = '' city = '' county = '' # 将提取出的信息添加到列表中 provinces.append(province) cities.append(city) counties.append(county)# 将提取出的省份、市、县信息添加到原数据后面df['省(自治区)'] = provincesdf['市(自治州)'] = citiesdf['县(区)'] = counties# 显示结果print(df)# 如果需要,可以将结果保存回Excel文件# df.to_excel('D:/Samples/提取省市县_处理结果.xlsx', index=False)

这段代码首先导入了pandas库,然后读取了指定路径的Excel文件,并选择了第1个工作表。接着,代码只提取了第1列"籍贯"的数据,并遍历了每一行,根据字符串中关键字的位置提取了省份、市、县的信息。最后,这些信息被添加到了原数据后面,并打印出来供检查。如果需要,可以将处理后的数据保存回一个新的Excel文件。

请注意,此代码假设了籍贯的格式是“省(自治区)市(自治州)县(区)”,并且“省”、“市”、“县”等关键字分别位于第3、6和9个字符的位置。如果实际数据格式与此不同,你可能需要调整代码中的字符串切片部分来适应实际的数据格式。

Python运行结果

图2.Python运行结果

0 阅读:0

李光朱课程

简介:感谢大家的关注