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

Pandas 模块-操纵数据(12)-处理字符串数据

目录

1. .str 模块

1.1 数据准备

1.2 .str 函数详解

1.2.1 .str capitalize() 首字母大写

 1.2.2 .str casefold() 返回字符串的副本

 1.2.3 .str cat() 连接输出

 1.2.4 .str center(width[,fillchar]) 字符串居中

 1.2.5 .str contains() 含有特定字符

 1.2.6 .str count() 计数

 1.2.7 .str endswith(suffix[, start[, end]]) 是否以指定后缀结尾

  1.2.8 .str extract(pat[,flags=0,expand=True]) 提取特定字符

  1.2.9 .str swapcase() 字符串大小写翻转

1.2.10 .str find(str [beg=0, end=len(string)]) / findall 检测是否包含子字符串 

1.2.11 .str join(str]) 连接生成新字符串  

1.2.12 .str replace(str1,str2]) str2 替换 str1

1.2.13 .str split(str[,num]) 用 str 分割字符串 

1.2.14 .str translate(table) 字符转换


我们实际处理数据时候,往往要对原始数据进行很多精细化处理,下面减少一些常用的处理字符串的方式。

1. .str 模块

        Pandas 的主要数据结构是 Series (一维数据)与 DataFrame(二维数据)。Series 结构中有个 str 模块,可以对字符串数据进行精雕细琢。

1.1 数据准备

import pandas as pd
# 创建一个示例DataFrame
df = pd.DataFrame({'data': ['a123bm', '456cj', '789du', 'e11fo']})
print(df)
type(df['data'])
Series 类型数据

1.2 .str 函数详解

1.2.1 .str capitalize() 首字母大写

df['data'].str.capitalize()

 1.2.2 .str casefold() 返回字符串的副本

        casefold 返回字符串的副本,所有的大写字符都被转换为小写字符,并且使用Unicode规范化,以便比较字符串时能够忽略大小写和语言差异。与lower()方法不同,casefold()方法在转换时考虑了更多的字符集和语言差异。

import pandas as pd
# 创建一个示例DataFrame
df = pd.DataFrame({'data': ['a123bM', '456Cj', '789du', 'e11fo']})
print(df)
print("*"*20)
df['data'].str.casefold()

 1.2.3 .str cat() 连接输出

        cat 命令原来是一个Linux shell命令。它是 concatenate 的简写。它被放在最常用的shell命令中。它可以用于各种目的,如在终端上显示一个文件的内容,将一个给定文件的内容复制到另一个给定文件,追加和覆盖内容都可以用 cat 命令完成。 在 Python 中它用来连接所有的数据一起输出

import pandas as pd
# 创建一个示例DataFrame
df = pd.DataFrame({'data': ['a123bM', '456Cj', '789du', 'e11fo']})
print(df)
print("*"*20)
df['data'].str.cat()

 1.2.4 .str center(width[,fillchar]) 字符串居中

        center()是一个非常实用的方法。该方法主要用于将字符串居中,并在两侧填充指定字符(默认为空格)以达到指定的总长度。对于文本格式化、界面设计以及数据展示等场景,center()方法都能提供高效的解决方案。

  • width:指定字符串居中后的总长度,如果该长度小于原字符串长度,则原样返回字符串。

  • fillchar:可选参数,用于指定填充字符,默认为空格。

import pandas as pd
# 创建一个示例DataFrame
df = pd.DataFrame({'data': ['a123bM', '456Cj', '789du', 'e11fo']})
print(df)
print("*"*20)
df['data'].str.center(20,"*")

 1.2.5 .str contains() 含有特定字符

        contains 方法可以判断子串是否在原字符串中。

import pandas as pd
# 创建一个示例DataFrame
df = pd.DataFrame({'data': ['a123bM', '456Cj', '789du', 'e11fo']})
print(df)
print("*"*20)
df['data'].str.contains("M")

 1.2.6 .str count() 计数

        count 用于计算给定元素在字符串中出现的次数。

import pandas as pd
# 创建一个示例DataFrame
df = pd.DataFrame({'data': ['a123bM', '456Cj', '789du', 'e11fo']})
print(df)
print("*"*20)
df['data'].str.count("(\d)")

 1.2.7 .str endswith(suffix[, start[, end]]) 是否以指定后缀结尾

        endswith() 方法用于判断字符串是否以指定后缀结尾,如果以指定后缀结尾返回True,否则返回False。可选参数"start"与"end"为检索字符串的开始与结束位置。

import pandas as pd
# 创建一个示例DataFrame
df = pd.DataFrame({'data': ['a123bM', '456Cj', '789du', 'e11fo']})
print(df)
print("*"*20)
df['data'].str.endswith('\d')

  1.2.8 .str extract(pat[,flags=0,expand=True]) 提取特定字符

        extract 方法用于提取正则表达式pat中的捕获组作为DataFrame中的列。对于系列中的每个主题字符串,从正则表达式pat的第一个匹配中提取组。

        pat : 带有捕获组的正则表达式模式。
        flags : int, default 0 (no flags)
        expand : 如果为真,则返回每个捕获组有一列的DataFrame。

df['data'].str.extract("(\d+)")

  1.2.9 .str swapcase() 字符串大小写翻转

df['data'].str.swapcase()

 

1.2.10 .str find(str [beg=0, end=len(string)]) / findall 检测是否包含子字符串 

        find() 方法检测字符串中是否包含子字符串 str ,如果指定 beg(开始) 和 end(结束) 范围,则检查是否包含在指定范围内,如果包含子字符串返回开始的索引值,否则返回-1。

  • str -- 指定检索的字符串
  • beg -- 开始索引,默认为0。
  • end -- 结束索引,默认为字符串的长度。
import pandas as pd
# 创建一个示例DataFrame
df = pd.DataFrame({'data': ['a123aM', '45aCa', '789da', 'e11f5']})
print(df['data'].str.find('a'))
print(df['data'].str.findall('a'))

1.2.11 .str join(str]) 连接生成新字符串  

         join() 方法用于将序列中的元素以指定的字符连接生成一个新的字符串。

import pandas as pd
# 创建一个示例DataFrame
df = pd.DataFrame({'data': ['a123aM', '45aCa', '789da', 'e11f5']})
print(df['data'].str.join("-"))

1.2.12 .str replace(str1,str2]) str2 替换 str1

import pandas as pd
# 创建一个示例DataFrame
df = pd.DataFrame({'data': ['a123aM', '45aCa', '789da', 'e11f5']})
print(df['data'].str.replace("a","A"))

1.2.13 .str split(str[,num]) 用 str 分割字符串 

       split 通过指定分隔符对字符串进行切片,如果参数 num 有指定值,则分隔 num+1 个子字符串

import pandas as pd
# 创建一个示例DataFrame
df = pd.DataFrame({'data': ['a123aM', '45aCa', '789da', 'e11f5']})
print(df['data'].str.split("\d"))

 

1.2.14 .str translate(table) 字符转换

         translate 用于执行字符转换操作。它接受一个映射表(translation table)作为参数,该映射表指定了要替换的字符以及它们的对应替换值。

import pandas as pd
# 创建一个示例 DataFrame
df = pd.DataFrame({'data': ['12345', '57890', '22222', '77777']})
table = str.maketrans( '0123456789','abcdefghij')
df['data'].str.translate(table)

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 【文末附gpt升级方案】亚马逊与Hugging Face合作:定制芯片低成本运行AI模型的创新探索
  • FreeRTOS 源码概述
  • CCF20230901——坐标变换(其一)
  • C#拼接xml
  • 甲方怒喷半小时:一次项目上线失败的深刻教训
  • m1系列芯片aarch64架构使用docker-compose安装rocketmq5.0以及运维控制台
  • 时政|医疗结果互认
  • 比较含退格的字符串-力扣
  • MySQL和MongoDB数据库的区别
  • 利用天气API接口自己DIY一个预报小管家
  • 部署k8s集群
  • 【2024软考】史上最全!软考刷题+解析大合集(9万字全手工打,货真价实)
  • 【draw.io的使用心得介绍】
  • 诺兰电影欣赏笔记
  • c++编程14——STL(3)list
  • extjs4学习之配置
  • interface和setter,getter
  • JDK9: 集成 Jshell 和 Maven 项目.
  • Js实现点击查看全文(类似今日头条、知乎日报效果)
  • oschina
  • React+TypeScript入门
  • React-生命周期杂记
  • RedisSerializer之JdkSerializationRedisSerializer分析
  • Redis中的lru算法实现
  • Spark RDD学习: aggregate函数
  • uva 10370 Above Average
  • Zepto.js源码学习之二
  • 从零开始的webpack生活-0x009:FilesLoader装载文件
  • 大快搜索数据爬虫技术实例安装教学篇
  • 它承受着该等级不该有的简单, leetcode 564 寻找最近的回文数
  • 物联网链路协议
  • 在GitHub多个账号上使用不同的SSH的配置方法
  • k8s使用glusterfs实现动态持久化存储
  • 交换综合实验一
  • #NOIP 2014# day.2 T2 寻找道路
  • #职场发展#其他
  • (LeetCode) T14. Longest Common Prefix
  • (leetcode学习)236. 二叉树的最近公共祖先
  • (webRTC、RecordRTC):navigator.mediaDevices undefined
  • (ZT)薛涌:谈贫说富
  • (附源码)spring boot建达集团公司平台 毕业设计 141538
  • (文章复现)基于主从博弈的售电商多元零售套餐设计与多级市场购电策略
  • (转)C语言家族扩展收藏 (转)C语言家族扩展
  • (转)Spring4.2.5+Hibernate4.3.11+Struts1.3.8集成方案一
  • (转)我也是一只IT小小鸟
  • .htaccess配置重写url引擎
  • .net 7 上传文件踩坑
  • .NET 8 中引入新的 IHostedLifecycleService 接口 实现定时任务
  • .NET Remoting学习笔记(三)信道
  • .net(C#)中String.Format如何使用
  • @Autowired和@Resource的区别
  • @开发者,一文搞懂什么是 C# 计时器!
  • [20181219]script使用小技巧.txt
  • [20190401]关于semtimedop函数调用.txt
  • [8481302]博弈论 斯坦福game theory stanford week 1