python库--pandas--Series.str--字符串处理

目录

  • 原数据
  • 字符大小写转换
  • 字符串拼接
  • 字符填充/插入/扩展
  • 字符串内容判断
  • 查找
  • 统计
  • 转码
  • 删减/截取
  • 分割/替换

原数据

import pandas as pd
a = pd.Series(['aSd', 'asd', 'dfd fsAsf sfs'])
b = pd.Series([None, 'asd', 'fgh'])
indexab
0aSdNone
1asdasd
2dfd fsAsf sfsfgh

字符大小写转换

a.str.lower()
a.str.upper()
a.str.title()
a.str.capitalize()
a.str.swapcase()
loweruppertitlecapitalizeswapcase
0asdASDAsdAsdAsD
1asdASDAsdAsdASD
2dfd fsasf sfsDFD FSASF SFSDfd Fsasf SfsDfd fsasf sfsDFD FSaSF SFS

字符串拼接

自身拼接

a.str.cat(sep=',')

aSd,asd,dfd fsAsf sfs

与其它series拼接

a.str.cat(a)
a.str.cat(['aSd', 'asd', 'dfd fsAsf sfs'])
a + a
indexvalue
0aSdaSd
1asdasd
2dfd fsAsf sfsdfd fsAsf sfs
a.str.cat(a, sep=',')
a.str.cat(['aSd', 'asd', 'dfd fsAsf sfs'], sep=',')
a + ',' + a
indexvalue
0aSd,aSd
1asd,asd
2dfd fsAsf sfs,dfd fsAsf sfs

数据含有None/NaN的情况

b.str.cat(sep=',')

asd,fgh

# 将NaN替换为指定字符串进行操作
a.str.cat(sep=',', na_rep='???')

???,asd,fgh

  • 剩下的情况除将NaN替换为指定字符之外跟上述示例一样, 这里不再进行演示

字符填充/插入/扩展

# 向两端填充指定字符到指定长度
a.str.center(width=10, fillchar='?')
a.str.pad(width=10, side='both', fillchar='?')
# 在右侧填充指定字符到指定长度
a.str.ljust(width=10, fillchar='?')
a.str.pad(width=10, side='right', fillchar='?')
# 在右侧填充指定字符到指定长度
a.str.rjust(width=10, fillchar='?')
a.str.pad(width=10, side='left', fillchar='?')
centerljustrjust
0???aSd????aSd??????????????aSd
1???asd????asd??????????????asd
2dfd fsAsf sfsdfd fsAsf sfsdfd fsAsf sfs
# 每隔指定个字符插入一个换行符
a.str.wrap(width=2)
# 在字符串前面填充0到指定长度
a.str.zfill(width=10)
# 将字符串扩展n倍
a.str.repeat(repeats=2)
# 为每一个元素指定扩展倍数
a.str.repeat(repeats=[2, 2, 2])
wrapzfillrepeat
0aS\nd0000000aSdaSdaSd
1as\nd0000000asdasdasd
2df\nd \nfs\nAs\nf \nsf\nsdfd fsAsf sfsdfd fsAsf sfsdfd fsAsf sfs
  • join() 在字符间插入字符
a.str.join(sep='?')
# 等同于
a.map(lambda x: '?'.join(x))
  • 因此也出现了一种特殊情况, 元素不是字符串但可以使用join方法
  • 经过不完全证明, '?'.join() 中支持的参数作为Series的元素是都可使用此方法
pd.Series([['1', '2', '3']]).join('?')

字符串内容判断

以下方法返回由True和False组成的Series

  • contains(): 判断指定字符串或正则表达式是否在序列或索引中
参数说明
pat字符串或正则表达式
case=True是否区分大小写
flags=0可传入re.IGNORECASE之类的参数
na=nan缺失值填充
regex=True是否使用正则表达式匹配
  • endswith(): 判断是否以给定的字符串结尾
参数说明
pat字符串
na=nan缺失值填充
  • match(): 判断是否以给定的字符串开头(支持正则)
参数说明
pat字符串或正则表达式
case=True是否区分大小写
flags=0可传入re.IGNORECASE之类的参数
na=nan缺失值填充
as_indexer=None弃用
方法说明
.isalnum()字符串至少包含一个字符且所有字符都是字母(汉字)或数字则返回True
.isalpha()字符串至少包含一个字符且所有字符都是字母(汉字)则返回True
.isdigit()只包含数字(可以是: Unicode, 全角字符, bytes(b'1'), 罗马数字)
.isspace()只包含空白符
.islower()至少包含一个小写字符, 且不包含大写字符
.isupper()至少包含一个大写字符, 且不包含小写字符
.istitle()所有单词大写开头其余小写(标题化)
.isnumeric()只包含数字字符
.isdecimal()只包含数字(Unicode字符, 全角字符)

查找

  • extract(): 使用正则表达式提取需要的内容(只返回第一次匹配到的内容)
  • extractall(): 使用正则表达式提取需要的内容(返回所有匹配到的内容
参数说明
pat正则表达式(必须含有捕获组, 超过一个必然返回DataFrame)
若捕获组设有name则将作为返回的列标签
flags=0可传入re.IGNORECASE之类的参数
expand=NoneTrue: 返回DataFrame(未来版本默认值)
False: 返回S/I/DataFrame(现在版本默认值)
extractall() 方法无此参数
a.str.extract('([A-Z]+)')
a.str.extract('([A-Z]+)(s*)')
([A-Z]+)-([A-Z]+)(s*)
0S-S
1NaN-NaN  NaN
2A-A    s
a.str.extractall('(?P<field1>[sSdf]+)(?P<field2>[ds])')
field1field2说明
match
00Sd第1行第1个匹配结果
10sd第2行第1个匹配结果
20dfd第3行第1个匹配结果
1fs第3行第2个匹配结果
2sfs第3行第3个匹配结果
  • 检索sub在字符串中的位置, 可以指的那个开始检索和结束检索的位置
    1. find(): 检索不到返回-1
    2. rfind(): 从右往左检索, 检索不到返回-1
    3. index(): 检索不到触发异常
    4. rindex(): 从右往左检索, 检索不到返回-1
a.str.find(sub='s')
# 从第6个字符开始查找到第10个字符结束查找
a.str.find(sub='s', start=6, end=10)
(sub='s')(sub='s', start=6, end=10)
0-1-1
11-1
257
  • findall(): 以列表形式返回正则表达式所有匹配结果
a.str.findall(pat='[sSdf]+')
a.map(lambda x: re.findall('[sSdf]+', x))
结果
0[Sd]
1[sd]
2[dfd, fs, sf, sfs]
  • get(): 获取指定位置的字符
a.str.get(i=1)
结果
0S
1s
2f

统计

  • count() 统计指定字符串(支持正则)在序列字符串中出现的次数
  • len() 返回序列字符串的长度
a.str.count(pat='s', flags=0)
a.str.len()
countlen
003
113
2413

转码

  • encode(): 编码str --> bytes
  • decode(): 解码bytes --> str
参数说明
encoding编码方式
error='static'static: 编码/解码失败抛出异常

ignore: 编码/解码失败自动忽略非法字符

replace: 编码/解码失败则使用 ? 替代非法字符

xmlcharrefreplace: 则引用XML的字符.

c = pd.Series(['中文', '\ud83easd'])
c.str.encode('utf8', 'ignore')
c.str.encode('utf8', 'replace')
c.str.encode('utf8', 'xmlcharrefreplace')
ignorereplacexmlcharrefreplacebackslashreplace
1b'asd'b'?asd'b'&#55358;asd'b'\ud83easd'
# 中国: b'\xe4\xb8\xad\xe6\x96\x87'
d = pd.Series([b'\xe4\xb8\xad\xe6\x96'])
d.str.decode('utf8', 'ignore')
ignorereplacexmlcharrefreplacebackslashreplace
1中�NaN中\xe6\x96
  • normalize(): 返回字符串的Unicode标准格式

删减/截取

  • strip(to_strip=None): 删除两侧指定字符, 默认删除空白符
  • lstrip(to_strip=None): 删除左侧指定字符, 默认删除空白符
  • rstrip(to_strip=None): 删除右侧指定字符, 默认删除空白符
  • slice() 截取子字符串
参数说明
start=None开始位置
stop=None结束位置
step=None步长

分割/替换

  • split() 使用指定字符分割字符串, 支持正则
  • rsplit() 从右侧开始分割
参数说明
pat=None分隔符, 默认空白符
n=-1分割次数, 默认全部
expand=FalseTrue: 返回DataFrame/MultiINdex
False: 返回Series/Index
  • get_dummies(): 对字符串分割, 并返回每个分割结果出现的次数
>>> pd.Series(['a|b', 'a', 'a|c']).str.get_dummies()a  b  c
0  1  1  0
1  1  0  0
2  1  0  1
>>> pd.Series(['a|b', np.nan, 'a|c']).str.get_dummies()a  b  c
0  1  1  0
1  0  0  0
2  1  0  1
  • partition(pat='', expand=True): 第一次出现pat时将字符串分割为三个部分: pat前面的部分, pat本身, pat后面的部分
  • rpartition(): 从右往左检测pat字符串

更新字符串

  • replace(): 更新字符串
参数说明
pat字符串或编译的正则表达式
replstr: 将匹配到的字符串替换为此字符串
fun: 传给fun的是对象相当于re.search(pat, string)的返回值
n=-1替换的次数, 默认全部
case=None是否区分大小写, 如果pat为字符串则默认为True, 若为编译的正则表达式则不能设置
flags=0可传入re.IGNORECASE之类的参数, 但若pat为编译的正则表达式则不能设置
  • slice_replace(): 将选中的部分替换为指定字符串
参数说明
start=None开始位置
stop=None结束位置
repl=None要替换为的字符串
  • translate(): 字符替换
    1. dict: {ord('a'): 'x'} 或 {ord('a'): ord('x')} key必须是ascii码, value可以是字符串或ASCII码
    2. str.maketrans('a','x') 等同于 {97: 120}

转载于:https://www.cnblogs.com/P--K/p/11148250.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/462087.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

linux下多线程之pthread_detach(pthread_self())

写个碰到的问题&#xff0c;记录下自己的技术之路点滴 pthread_detach(pthread_self()) linux线程执行和windows不同&#xff0c;pthread有两种状态joinable状态和unjoinable状态&#xff0c; 如果线程是joinable状态&#xff0c;当线程函数自己返回退出时或pthread_exit时都不…

Unique Binary Search Trees

使用带标记的DP int result[1000];int numTrees(int n) {result[0] 1;result[1] 1;result[2] 2;// Start typing your C/C solution below// DO NOT write int main() functionif(result[n] ! 0)return result[n];int num 0, t;for(t 1; t < n; t){num num numTrees(…

ERROR: Start Page at 'www/index.html' was not found

用Xcode 4.3.2新建了一个PhoneGap的应用&#xff0c;www目录下存在index.html文件&#xff0c;但是运行的时候&#xff0c;报错&#xff1a;ERROR: Start Page at www/index.html was not found&#xff0c;这是PhoneGap和Xcode 4还不兼容导致的。 可以右键项目名->Add File…

Linux线程-互斥锁pthread_mutex_t

在线程实际运行过程中&#xff0c;我们经常需要多个线程保持同步。这时可以用互斥锁来完成任务&#xff1b;互斥锁的使用过程中&#xff0c;主要有pthread_mutex_init&#xff0c;pthread_mutex_destory&#xff0c;pthread_mutex_lock&#xff0c;pthread_mutex_unlock这几个函…

百度前端技术学院,学习第一天。

有基础&#xff0c;所以第一天的了解基本可以跳过。 略.. 转载于:https://www.cnblogs.com/devanwu/p/11149051.html

ULS 日志为空

解决方案&#xff1a; 1.保存为ChangeAccounts_SPTraceV4.ps1&#xff0c;运行 # Get the tracing service. $farm Get-SPFarm $tracingService $farm.Services | where {$_.Name -eq "SPTraceV4"} # Get the "svc_sp_services" managed account. $manag…

2013 ACM/ICPC Asia Regional Changsha Online - C

2019独角兽企业重金招聘Python工程师标准>>> 竟然没写出来 还是比较坑&#xff0c;好吧 Color Representation Conversion Time Limit: 1 Second Memory Limit: 32768 KB So far, there are many color models in different area. For screen display, the most …

vs2017常量文本字符串无法转换成char*

vs2017中这种写法编译不通过&#xff1a;char* pTest "hello"; 解决方法&#xff1a;在C/C选项-命令行-附加选项中增加&#xff1a;/Zc:strictStrings- (Disable string literal type conversion)转载于:https://www.cnblogs.com/dqloveu/p/11149222.html

linux中DIR、dirent、opendir()、readdir()、closedir()函数的使用

一、 1、DIR 属性&#xff1a;数据类型&#xff1b; 头文件&#xff1a;#include <dirent.h> 用法&#xff1a;定义一个指向文件目录的指针&#xff1b; 举例&#xff1a;DIR *dirpt null; 2、dirent 属性&#xff1a;数据类型&#xff0c;结构体&#xff1b; 头…

BNUOJ 4358 左手定则 搜索

题目链接&#xff1a;http://acm.bnu.edu.cn/bnuoj/problem_show.php?pid4358 一道很好的搜索题&#xff0c;要注意DFS函数的写法&#xff0c;特别是return的写法。 View Code 1 #include <iostream>2 #include <cstring>3 #include <cstdio>4 using names…

CentOS安装Confluence Wiki步骤

参考&#xff1a;http://supernetwork.blog.51cto.com/2304163/1187066参考&#xff1a;http://yjiang.tk/?p1085需要的文件CentOS-6.5-x86_64-minimal.isojre-7u67-linux-x64.rpmatlassian-confluence-5.4.4-x64.binmysql-connector-java-5.1.32-bin.jarconfluence5.1-crack.…

memset()、memcpy()、memcmp()的使用方法

1、void *memset(void *s,int ch,size_t n); 属性&#xff1a;函数&#xff1b; 用法&#xff1a;将s中当前位置后面n个字节用ch替换&#xff0c;并返回s&#xff1b; 头文件(C语言)&#xff1a;#include <string.h> 举例&#xff1a; char str_addr[50]; memset(str…

provider: 命名管道提供程序, error: 40 - 无法打开到 SQL Server 的连接错误的解决方法...

这个错误主要有以下几个原因造成&#xff1a; 1. 错误的连接字符串&#xff1a;例如数据源的实例名称“\"错误写成"/"了 2、Named Pipes(NP)没有启动 其他原因&#xff0c;详见&#xff1a;http://social.msdn.microsoft.com/forums/en-US/sqlreportingservices…

使用VS2015编写C/C++开始步骤

下面围绕如何建立工程、如何添加代码和运行展开说明。 一、建立工程 &#xff08;1&#xff09;打开VS2015&#xff0c;然后在菜单栏中选择file—>New—>Project&#xff1b; &#xff08;2&#xff09;在弹出的界面中&#xff0c;选择Win32&#xff0c;编辑工程名字、…

ruby中正则表达式最小匹配与最大匹配

正则表达式中&#xff0c;默认的是最大匹配&#xff0c;即贪婪模式&#xff0c;但有些时候&#xff0c;要最小匹配&#xff0c; 请看下面的例子&#xff1a;(ruby) str "abbbbbdwwdwwwede"puts str[/a.*(dw)/] 结果为&#xff1a;abbbbbdwwdw str "abbbbbdwwd…

sprintf()、fprintf()的使用方法

1、int sprintf(char *str,char *format,[forgument,..]); 属性&#xff1a;函数&#xff1b; 用法&#xff1a;将格式化的字符写入字符串&#xff1b; 头文件&#xff1a;#include <stdio.h> 参数&#xff1a;char *str:要写入字符串的指针&#xff1b; char *form…

界面小项目之小米登录注册

<!DOCTYPE html><html><head> <meta charset"UTF-8"> <title>登录注册</title> <style> body, ul { margin: 0; padding: 0; list-style: none; } .logi…

Crusher Django 学习笔记4 使用Model

http://crusher-milling.blogspot.com/2013/09/crusher-django-tutorial4-using-basic.html 顺便学习一下FQ Crusher Django转载于:https://www.cnblogs.com/impact-crusher/p/3339029.html

C库中的输入函数、输出函数

关于这些C库输入函数、输出函数的用法&#xff0c;可以在命令行输入“man 3 xxx”来查询。 一、printf()函数、scanf()函数 1、printf()函数 函数模型 int printf(const char *format, ...); 函数作用 把存储在计算机中的二进制格式的数值&#xff0c;按照转换说明&#xff0c…

【音乐】想不起来歌名的瞎唱

1、风吹稻&#xff08;盗&#xff09;花香~好地方~ 2、转载于:https://www.cnblogs.com/wxl845235800/p/11152088.html