当前位置: 首页 > news >正文

Python使用 pandas操作Excel文件并新增列数据

业务实现:对于原先的excel文件,我需要新增一个数据列,不同情况,列数据的值不同,分别为空白行、已爬取、已改名、爬取异常、改名未知异常

# -*- coding: utf-8 -*-
import io
import os
import re
import sysimport numpy as np
import pandas as pd
import pandas.io.formats.excel
pandas.io.formats.excel.ExcelFormatter.header_style = None  # 表头不加粗reload(sys)
sys.setdefaultencoding('utf-8')def change_data(data):try:data = data.replace(' ', '')  # 删除空格data = re.sub(r'\([^)]*\)', '', data)  # 删除括号以及内容data = re.sub(r'\*', '', data)  # 删除*号return dataexcept Exception:pass# 文件夹名称
dir_name_set = set()
for item in os.listdir(unicode(os.path.join(os.path.dirname(os.path.abspath(__file__)), 'country'), 'utf-8')):item = change_data(item)dir_name_set.add(item)# 改名字典
spacial_name_dict = {}
with io.open(os.path.join(os.path.dirname(os.path.abspath(__file__)), 'spacial_country.txt'), 'r', encoding='utf-8') as f:lines = f.readlines()for line in lines:line_split = line.strip().split(' ')name1 = change_data(line_split[0])if '/' in name1:name1 = name1.split('/')[0]name2 = change_data(line_split[1])if '/' in name2:name2 = name2.split('/')[0]spacial_name_dict[name1] = name2filename = os.path.join(os.path.dirname(os.path.abspath(__file__)), 'country.xlsx')
sheet_name='species_data'
df = pd.read_excel(filename, sheet_name=sheet_name)
dfc = df.copy()
idx = 1# 处理每一行数据
for index, row in dfc.iterrows():  # 返回每一行的索引和对应的行数据name = row['name']try:if isinstance(name, float) and np.isnan(name):dfc.loc[index, 'status'] = '空白行'else:name = change_data(name)if name in dir_name_set:dfc.loc[index, 'status'] = '已爬取'elif name in spacial_name_dict.keys():if spacial_name_dict[name] in dir_name_set:dfc.loc[index, 'status'] = '已改名为{}'.format(spacial_name_dict[name])else:dfc.loc[index, 'status'] = '改名未知异常'else:dfc.loc[index, 'status'] = '爬取异常'if (index != 0 and index % 10000 == 0) or index == len(dfc) - 1:print index, idxif idx == 15:dfcc = dfc.copy()output_path = os.path.join(os.path.dirname(os.path.abspath(__file__)), 'country_{}.xlsx'.format(idx))print 'output_path', output_pathdfcc.to_excel(output_path, sheet_name=sheet_name, index=False, header=True)idx += 1except Exception as e:print name, e
http://www.dtcms.com/a/495532.html

相关文章:

  • 宝塔面板点击ssl证书报错:出错了,面板运行时发生错误!ModuleNotFoundError: No module named ‘OpenSSL‘
  • Django与Tornado框架深度对比:从MVCMTV到高并发架构设计
  • 湖南畅想网站建设大连品牌网站建设公司
  • S4和ECC或者不通CLIENT,不通HANA服务器互相取数
  • Linux中控制台初始化console_init函数的实现
  • pycharm 默认终端设置 cmd
  • JavaScript 加密工具 sojson.v5 全解析:原理、应用与实践
  • 【Python库包】ESMF 库包介绍及安装
  • HarmonyOS ArkUI框架自定义弹窗选型与开发实战
  • 智能体开发(2)智能数据处理Agent
  • Visual Studio在一个解决方案管理多项目属性
  • 网站图片防盗连怎么做韶关营销网站开发
  • 10.17 设置组件导航和页面路由
  • 福田做商城网站建设找哪家公司比较安全简约好看的网站模板免费下载
  • 【GD32F527_EVAL】USB 驱动移植 和 USB CDC Device 接入PC实验
  • 网站开发网站定制查看网站源代码建站可以
  • stm32_QT6怎么打包
  • c 做网站流程如何做做网站
  • 深度剖析大模型Function Calling:从原理到优化策略
  • SQL入门:表关联-从基础到优化实战
  • YOLOv3 技术总结
  • 为什么有些前端开发者能快速交付,有些还在纠结架构设计
  • Calibre(开源电子书管理软件) v8.13.0 官方便携版
  • wordpress数据库端口娄底seo排名
  • 途牛旅游网站建设方案临安区做网站的公司
  • 【原理扫描】SSL/TLS 服务器瞬时 Difie-Hellman 公共密钥过弱
  • Java-152 深入浅出 MongoDB 索引详解 从 MongoDB B-树 到 MySQL B+树 索引机制、数据结构与应用场景的全面对比分析
  • QML学习笔记(四十)QML的FileDialog和FolderDialog
  • 泉州做网站设计歌词插件wordpress
  • NLP意图识别