​​​​​​Python之所以能够成为流行的数据分析语言,有一部分原因在于其简洁易用的字符串处理能力。

Python的字符串对象封装了很多开箱即用的内置方法,处理单个字符串时十分方便;对于Excel、csv等表格文件中整列的批量字符串操作,pandas库也提供了简洁高效的处理函数,几乎与内置字符串函数一一对应。也就是说:

点我免费领取全套软件测试(自动化测试)视频资料(备注“csdn000”)

  • 单个字符串处理,用Python内置的字符串方法;

  • 表格整列的字符串处理,用pandas库中的字符串函数;

本文就以常用的数据处理需求,来对比使用以上两种方式的异同,从而加深对Pythonpandas字符串操作的理解。(本文所有数据都是为了演示用的假数据,切勿当真!)

)

一、替换(去除空格)

场景:在问卷收集的姓名字段中,不少填写者会误输入空格,造成数据匹配不一致的问题。

Python#

names = '刘    备、关  羽、   张 飞、赵   云、马 超、黄 忠'
names = names.replace(' ','')
print(names)

output

刘备、关羽、张飞、赵云、马超、黄忠

pandas#

df['姓名'] = df['姓名'].str.replace(' ','')

output

pandas替换空格

二、分列

场景:在问卷收集数据的时候,多选题的数据往往是带有分隔符的。在分类汇总前往往需要按分隔符进行分列。

问卷中多选数据导出

Python#

hobbyStr = "足球┋排球┋羽毛球┋篮球"
hobbyList = hobbyStr.split('┋')

output

['足球', '排球', '羽毛球', '篮球']

pandas#

# 利用split进行分列,expand = True 返回dataframe;expand=False返回Series
hobbyDf = df['爱好'].str.split('|', expand=True)
# 将hobbyDf 与 df安装索引合并
df2 = pd.merge(df, hobbyDf, how="left", left_index=True, right_index=True)

分列、合并、导出Excel后效果

三、切片:截取数据

字符串是由一个个字符组成的序列,在Python中可以直接对字符串进行切片操作,来进行截取数据。

如“XX市四季家园二区22幢203室”,可以看作是下图中16个字符值组成的序列。而切片的语法是:

Python切片原理

Python#

addressStr = "XX市四季家园二区22幢203室"
print(f"城市:{addressStr[:3]}")
print(f"小区:{addressStr[3:9]}")

output

城市:XX市
小区:四季家园二区

pandas#

  • 提取城市名称,由于城市名称的字数相同,可以直接切片截取前三个。

df["城市"] = df["地址"].str[:3]

提取城市

  • 提取小区名,稍有点复杂。因为小区名称长度是不一样长的。可以利用字符串处理的天花板:正则表达式。详细处理方法,见下文五、正则表达式示例1。

  • 点我免费领取全套软件测试(自动化测试)视频资料(备注“csdn000”)

四、补齐数

有时候,我们在电脑中按文件名排序的时候,你可能会遇到下面的情况:

数值排序和字符排序

在不同系统中,我们希望是按数值排序,但偏偏系统却是按字符排序的,如某些车载播放器中。比较好的解决方法就是在前面添加0,补齐数据位数。数据量大的时候,手动修改很麻烦,Python字符串处理的zfill()函数就可以解决这个问题。

Pytho

myStr = "1章节"
print(myStr.zfill(4))  # 整个字符串补齐到4位

output

01章节

pandas#

df["新文件名"] = "第"+df["文件名"].str[1:].str.zfill(8)

image-20220330005403437

配合os.rename()便可以批量重命名。关键代码如下

df.apply(lambda x: os.rename( path + x["文件名"], path + x["新文件名"]), axis=1)

批量重命名演示

五、正则表达式

遇到复杂的字符串处理需求时,Python有优势就可以体现出来了。因为python和pandas有一个超强的字符串处理武器:正则表达式。正则表达式可以匹配字符串的格式特点,如电子邮箱的地址格式、网址的地址格式、电话号码格式等。如何写好正则表达式,这是一门精深的学问,本文介绍几个正则表达式的常用案例,浅尝辄止。

注:Python默认不支持正则表达式语法,而pandas直接支持正则表达式语法,这里重点介绍pandas处理表格数据。

1.提取长度不一样的小区名

思路:

  • 提取上面小区名,可以归纳一下地址中小区名的格式特点:苏州市之后,幢号数字之前的中文字符

  • Seriesstr.extract(),可用正则从字符数据中抽取匹配的数据;

## 匹配中文字符的正则表达式: [\u4e00-\u9fa5]
pattern = r'苏州市([\u4e00-\u9fa5]+)[0-9]+幢'
df["小区"] = df["地址"].str.extract(pattern, expand=False)

提取小区名

2.提取几幢几室

思路:几幢几室,格式都是数字+幢数字+室

  • 数字可以用[0-9]\d来匹配;

  • +表示1个或多个。

pattern = r'([0-9]+)幢'
df["幢号"] = df["地址"].str.extract(pattern, expand=False)pattern = r'(\d+)室'
df["室号"] = df["地址"].str.extract(pattern, expand=False)

提取幢号室号

六、apply函数

apply 函数:可以对DateFrame进行逐行或逐列进行处理。

1.增加一列,将幢号按照奇偶数分类

将幢号为奇数的为A区,偶数的为B区

# 定义处理的函数,共apply函数调用,传入的参数为一个Series对象
def my_func(series):if (series["幢号"]) % 2 != 0:return "A区"else:return "B区"df["幢号分类"] = df.apply(my_func, axis=1)

上述代码中apply函数,有两个参数

  • 第一个参数:处理逻辑的函数名。主要传入名称,这里为my_func

  • 第二个参数:axis = 1,表示按列处理。即传入的是每一行的Series

output

apply映射分类

2.增加一列,字典映射

def my_func2(series):# 映射字典,key为小区名,value为小区称号my_dict = {'吉祥如意家园': '最佳好运小区', '科技村': '最佳科创小区','四季家园': '最佳风光小区', '万象更新家园': '最佳风采小区',}# 每一行小区名称,切片截取至倒数第2个,即-2nameKey = series['小区'][:-2]return my_dict[nameKey]df["小区称号"] = df.apply(my_func2, axis=1)

output

apply匹配映射

结语

本文演示的字符串操作:替换分列切片截取补齐数据正则表达式apply()函数常见于数据分析的数据清洗环节,替换分列切片截取在Excel中也很容易实现,正则表达式可以说是Python处理复杂字符串问题的一大利器,apply()函数可以实现自定义函数处理表格型的数据,十分灵活、威力巨大。由于篇幅有限,正则表达式apply()函数本文就点到为止,今后值得整理更多相关案例。

点我免费领取全套软件测试(自动化测试)视频资料(备注“csdn000”)

全网没有之一的【Python自动化Excel】Python与pandas字符串操作相关推荐

  1. 【Python自动化Excel】Python与pandas字符串操作

    Python之所以能够成为流行的数据分析语言,有一部分原因在于其简洁易用的字符串处理能力. Python的字符串对象封装了很多开箱即用的内置方法,处理单个字符串时十分方便:对于Excel.csv等表格 ...

  2. python 1 2 3怎么拼接所有可能的数_6000字长文,带你用Python完成 “Excel合并(拆分)” 的各种操作!...

    原标题:6000字长文,带你用Python完成 "Excel合并(拆分)" 的各种操作! 一.概述 其实Excel合并这个需求,应该是一个极为普遍的需求了.今天我们就利用Pytho ...

  3. Appium+python自动化8-Appium Python API

    Appium+python自动化8-Appium Python API 前言: Appium Python API全集,不知道哪个大神整理的,这里贴出来分享给大家. 1.contexts contex ...

  4. Python自动化--1.Python环境安装-linux

    python自动化更贴近运维自动化 Python自动化–1.Python环境安装-linux Python自动化–2.Python变量 Python自动化–3.Python数据类型 Python自动化 ...

  5. Python和Excel的完美结合:常用操作汇总

    在以前,商业分析对应的英文单词是Business Analysis,大家用的分析工具是Excel,后来数据量大了,Excel应付不过来了(Excel最大支持行数为1048576行),人们开始转向pyt ...

  6. Python自动化--3.Python数据类型

    python自动化更贴近运维自动化 Python自动化–1.Python环境安装-linux Python自动化–2.Python变量 Python自动化–3.Python数据类型 Python自动化 ...

  7. 【Python自动化Excel】pandas处理Excel的拆分、合并

    话说Excel数据表,分久必合.合久必分.Excel数据表的"分"与"合"是日常办公中常见的操作.手动操作并不困难,但数据量大了之后,重复性操作往往会令人崩溃. ...

  8. python自动化办公-python自动化办公?学这些就够用了

    知乎上有人提问:用python进行办公自动化都需要学习什么知识呢? 这可能是很多非IT职场人士面临的困惑,想把python用到工作中,却不知如何下手? python在自动化办公领域越来越受欢迎,批量处 ...

  9. Python自动化办公:pdf文档操作

    在后台回复[阅读书籍] 即可获取python相关电子书~ Hi,我是山月. 之前给大家介绍了python处理excel.word.ppt的相关教程,不知道大家学的怎么样? 在后台回复[自动化办公]即可 ...

最新文章

  1. git init 会不会清空_Git命令:git pull amp; git fetch
  2. Lion的发送E-mail的类
  3. SCRFD is not in the models registry
  4. Spring MVC 接收请求参数所有方式总结!
  5. 行波iq调制器_低功率IQ调制器的基带设计实例—电路精选(1)
  6. B站直播中HLS和去中心化P2P的实际应用
  7. Daimler CRM中间件 inbound 调试
  8. openoffice转换过程中遇到繁体字文档转换失败的问题
  9. c# 读取写入excel单元格(包括对excel的一些基本操作)
  10. python工具包:Python Swiftclient
  11. SSE3指令集系列----数据加载与算术运算指令
  12. 字节跳动小程序平台审核常见被拒情形
  13. 阳光长跑(阳光体育服务平台)
  14. 利用elasticsearch实现搜索引擎
  15. ValueError: only one element tensors can be converted to Python scalars
  16. laravel定时任务设置
  17. 一个精明主妇写的省钱过日子的好贴
  18. 使用FFmpeg进行mp4与m3u8之间转换
  19. 在设计条形音箱时,确保您的无线技术能够提供最高质量的、可靠的音频
  20. Mybatis —— @Options注解实现执行参数配置

热门文章

  1. linux d bus效率,D-Bus study
  2. UPFC:基于MATALB/Simulink的统一潮流控制器(UPFC)的仿真模型
  3. 安装工程造价课程设计_电气安装工程造价 课程设计
  4. 简单批处理命令(1)
  5. python制作查询网页_django+mysql实现网页查询
  6. 拉卡拉智能POS严守数据安全让用户用的安心
  7. 完美解决【 Failed to clean project: Failed to delete XXX】
  8. 三网融合音视频新的机遇
  9. [游戏技术] Stripper:source地图事件说明
  10. 全国影子银行数据(含信托、理财、理财产品余额等数据)