我的编程空间,编程开发者的网络收藏夹
学习永远不晚

pandas中对文本类型数据的处理小结

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

pandas中对文本类型数据的处理小结

下面看下pandas中字符串类处理函数吧,内容如下所示:

1.英文字母大小写转换及填充


s = pd.Series(['lower', 'CAPITALS', 'this is a sentence', 'SwApCaSe'])
  • 大写转小写: s.str.lower()
  • 小写转大写:s.str.upper()
  • 转为新闻形式:s.str.title()
  • 首字母大写,其余小写:s.str.capitalize()
  • 将原来的大写和小写,分别转为小写和大写,即大小写互换:s.str.swapcase()
  • 将文字内容用某种字符填充到固定长度,会从两边进行填充:s.str.center(4,'*')
  • 将文字内容用某种字符填充到固定长度,可以设置填充方向(默认为left,可以设置为left,right,both):s.str.pad(width=10, side=‘right', fillchar='-')
  • 将文字内容用某种字符填充到固定长度,会从文字的右方进行填充,即原来的字符串在左边:s.str.ljust(4,'-')
  • 将文字内容用某种字符填充到固定长度,会从文字的左方进行填充,即原来的字符串在右边:s.str.rjust(4,'-')
  • 将文字内容用某种字符按照指定的方向(left,right,both)填充到固定长度: s.str.pad(3,side=‘left',fillchar='*')
  • 在字符串前添加0到指定长度:
  • s = pd.Series(['-1', ‘1', ‘1000', 10, np.nan])
  • s.str.zfill(3)

2.字符串合并与拆分

2.1 多列字符串合并

注意:多列字符串在合并时,推荐使用cat函数,该函数是按照索引进行合并的。


s=pd.DataFrame({'col1':['a', 'b', np.nan, 'd'],'col2':['A', 'B', 'C', 'D']})
# 1.有一个缺失值的行不进行合并
s['col1'].str.cat([s['col2']])
# 2.用固定字符(*)替换缺失值,并进行合并
s['col1'].str.cat([s['col2']],na_rep='*')
# 3.用固定字符(*)替换缺失值,并用分隔符(,)进行合并
s['col1'].str.cat([s['col2']],na_rep='*',sep=',')
# 4.索引不一致的合并
#创建series
s = pd.Series(['a', 'b', np.nan, 'd'])
t = pd.Series(['d', 'a', 'e', 'c'], index=[3, 0, 4, 2])
#合并
s.str.cat(t, join='left', na_rep='-')
s.str.cat(t, join='right', na_rep='-')
s.str.cat(t, join='outer', na_rep='-')
s.str.cat(t, join='inner', na_rep='-')

2.2 一列 列表形式的文本合并为一列


s = pd.Series([['lion', 'elephant', 'zebra'], [1.1, 2.2, 3.3], [
              'cat', np.nan, 'dog'], ['cow', 4.5, 'goat'], ['duck', ['swan', 'fish'], 'guppy']])
#以下划线进行拼接
s.str.join('_')

使用前:

join使用前

使用后:

join使用后

2.3 一列字符串与自身合并成为一列


s = pd.Series(['a', 'b', 'c'])
#指定数字
s.str.repeat(repeats=2)
#指定列表
s.str.repeat(repeats=[1, 2, 3])

使用该函数后,效果图分别如下:

repeat数字
repeat指定列表

2.4 一列字符串拆分为多列

2.4.1 partition函数

partition函数,会将某列字符串拆分为3列,其中2列为值,1列为分隔符。
有两个参数进行设置,分别为:sep(分隔符,默认为空格),expand(是否生成dataframe,默认为True)


s = pd.Series(['Linda van der Berg', 'George Pitt-Rivers'])
#默认写法,以空格分割,会以第一个分隔符进行拆分
s.str.partition()
#另一写法,会以最后一个分隔符进行拆分
s.str.rpartition()
#以固定符号作为分隔符
s.str.partition('-', expand=False)
#拆分索引
idx = pd.Index(['X 123', 'Y 999'])
idx.str.partition()

2.4.2 split函数

split函数会按照分隔符拆分为多个值。
参数:
pat(分隔符,默认为空格);
n(限制分隔的输出,即查找几个分隔符,默认-1,表示全部);
expend(是否生成dataframe,默认为False)。


s = pd.Series(["this is a regular sentence","https://docs.python.org/3/tutorial/index.html",np.nan])
#1.默认按照空格进行拆分
s.str.split()
#2.按照空格进行拆分,并限制2个分隔符的输出
s.str.split(n=2)
#3.以指定符号拆分,并生成新的dataframe
s.str.split(pat = "/",expend=True)
#4.使用正则表达式来进行拆分,并生成新的dataframe
s = pd.Series(["1+1=2"])
s.str.split(r"\+|=", expand=True)

2.4.3 rsplit函数

如果不设置n的值,rsplit和split效果是相同的。区别是,split是从开始进行限制,rsplit是从末尾进行限制。


s = pd.Series(["this is a regular sentence","https://docs.python.org/3/tutorial/index.html",np.nan])
#区别于split
s.str.rsplit(n=2)

3.字符串统计

 3.1 统计某列字符串中包含某个字符串的个数


s = pd.Series(['dog', '', 5,{'foo' : 'bar'},[2, 3, 5, 7],('one', 'two', 'three')])
s.str.len()

3.2 统计字符串长度


s = pd.Series(['dog', '', 5,{'foo' : 'bar'},[2, 3, 5, 7],('one', 'two', 'three')])
s.str.len()

效果图如下:

len

4.字符串内容查找(包含正则)

 4.1 extract

可通过正则表达式来提取指定内容,小括号内的会生成一列


s = pd.Series(['a1', 'b2', 'c3'])
#按照小括号内的进行提取,生成两列
s.str.extract(r'([ab])(\d)')
#加上问号后,如果有一个匹配不上,还可以继续匹配
s.str.extract(r'([ab])?(\d)')
#可以对生成的新列进行重命名
s.str.extract(r'(?P<letter>[ab])(?P<digit>\d)')
#生成1列
s.str.extract(r'[ab](\d)', expand=True)

4.2 extractall

区别于extract,该函数可以提取所有符合条件的元素


s = pd.Series(["a1a2", "b1", "c1"], index=["A", "B", "C"])
#提取所有符合条件的数字,结果为多重索引1列
s.str.extractall(r"[ab](\d)")
#提取符合条件的数字,并重命名,结果为多重索引1列
s.str.extractall(r"[ab](?P<digit>\d)")
#提取符合条件的a、b和数字,结果为多重索引多列
s.str.extractall(r"(?P<letter>[ab])(?P<digit>\d)")
#提取符合条件的a、b和数字,添加问号后,一个匹配不上可以继续向后匹配,结果为多重索引多列
s.str.extractall(r"(?P<letter>[ab])?(?P<digit>\d)")

4.3 find

查询固定字符串在目标字符串中的最小索引。
若需要查询的字符串未出现在目标字符串中,则显示为-1


s = pd.Series(['appoint', 'price', 'sleep','amount'])
s.str.find('p')

显示结果如下:

find

4.4 rfind

查询固定字符串在目标字符串中的最大索引。
若需要查询的字符串未出现在目标字符串中,则显示为-1。


s = pd.Series(['appoint', 'price', 'sleep','amount'])
s.str.rfind('p',start=1)

查询结果如下:

rfind

4.5 findall

查找系列/索引中所有出现的模式或正则表达式


s = pd.Series(['appoint', 'price', 'sleep','amount'])
s.str.findall(r'[ac]')

显示结果如下:

findall

4.6 get

从列表、元组或字符串中的每个元素中提取元素的系列/索引。


s = pd.Series(["String",
               (1, 2, 3),
               ["a", "b", "c"],
               123,
               -456,
               {1: "Hello", "2": "World"}])
s.str.get(1)

效果如下图:

get

4.7 match

确定每个字符串是否与参数中的正则表达式匹配。


s = pd.Series(['appoint', 'price', 'sleep','amount'])
s.str.match('^[ap].*t')

匹配效果图如下:

match

5.字符串逻辑判断

5.1 contains函数

测试模式或正则表达式是否包含在系列或索引的字符串中。
参数:
pat,字符串或正则表达式;
case,是否区分大小写,默认为True,即区分大小写;
flags,是否传递到re模块,默认为0;
na,对缺失值的处理方法,默认为nan;
regex,是否将pat参数当作正则表达式来处理,默认为True。


s = pd.Series(['APpoint', 'Price', 'cap','approve',123])
s.str.contains('ap',case=True,na=False,regex=False)

效果图如下:

contains

5.2 endswith函数

测试每个字符串元素的结尾是否与字符串匹配。


s = pd.Series(['APpoint', 'Price', 'cap','approve',123])
s.str.endswith('e')

匹配结果如下:

在这里插入图片描述

处理nan值


s = pd.Series(['APpoint', 'Price', 'cap','approve',123])
s.str.endswith('e',na=False)

效果如下:

在这里插入图片描述

5.3 startswith函数

测试每个字符串元素的开头是否与字符串匹配。


s = pd.Series(['APpoint', 'Price', 'cap','approve',123])
s.str.startswith('a',na=False)

匹配如下:

在这里插入图片描述

5.4 isalnum函数

检查每个字符串中的所有字符是否都是字母数字。


s1 = pd.Series(['one', 'one1', '1', ''])
s1.str.isalnum()

效果如下:

在这里插入图片描述

5.5 isalpha函数

检查每个字符串中的所有字符是否都是字母。


s1 = pd.Series(['one', 'one1', '1', ''])
s1.str.isalpha()

效果如下:

在这里插入图片描述

5.6 isdecimal函数

检查每个字符串中的所有字符是否都是十进制的。


s1 = pd.Series(['one', 'one1', '1',''])
s1.str.isdecimal()

效果如下:

在这里插入图片描述

5.7 isdigit函数

检查每个字符串中的所有字符是否都是数字。


s1 = pd.Series(['one', 'one1', '1',''])
s1.str.isdigit()

效果如下:

在这里插入图片描述

5.8 islower函数

检查每个字符串中的所有字符是否都是小写。


s1 = pd.Series(['one', 'one1', '1',''])
s1.str.islower()

效果如下:

在这里插入图片描述

5.9 isnumeric函数

检查每个字符串中的所有字符是否都是数字。


s1 = pd.Series(['one', 'one1', '1','','3.6'])
s1.str.isnumeric()

效果如下:

在这里插入图片描述

5.10 isspace函数

检查每个字符串中的所有字符是否都是空格。


s1 = pd.Series([' one', '\t\r\n','1', '',' '])
s1.str.isspace()

效果如下:

![isspace](https://img-blog.csdnimg.cn/ae2370a417bc4bddabbe9731e1637da3.png

5.11 istitle函数

检查每个字符串中的所有字符是否都是形式的大小写。


s1 = pd.Series(['leopard', 'Golden Eagle', 'SNAKE', ''])
s1.str.istitle()

效果如下:

在这里插入图片描述

5.12 isupper函数

检查每个字符串中的所有字符是否都是大写。


s1 = pd.Series(['leopard', 'Golden Eagle', 'SNAKE', ''])
s1.str.isupper()

效果如下:

在这里插入图片描述

5.13 get_dummies函数

按 sep 拆分系列中的每个字符串并返回一个 虚拟/指标变量的dataframe。


s1 = pd.Series(['leopard', 'Golden Eagle', 'SNAKE', ''])
s1.str.get_dummies()

效果如下:

在这里插入图片描述

该函数还可以进行此类匹配,注意输入的形式


s1=pd.Series(['a|b', np.nan, 'a|c'])
s1.str.get_dummies()

效果如下:

在这里插入图片描述

6.其他

6.1 strip

删除前导和尾随字符。


s1 = pd.Series(['1. Ant.  ', '2. Bee!\n', '3. Cat?\t', np.nan])
s1.str.strip()

效果如下:

在这里插入图片描述

6.2 lstrip

删除系列/索引中的前导字符。

6.3 rstrip

删除系列/索引中的尾随字符。

到此这篇关于pandas中对于文本类型数据的处理汇总的文章就介绍到这了,更多相关pandas文本类型数据处理内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

pandas中对文本类型数据的处理小结

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

pandas中对文本类型数据的处理的方法有哪些

本篇内容介绍了“pandas中对文本类型数据的处理的方法有哪些”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!1.英文字母大小写转换及填充s
2023-06-25

Pandas文本数据处理的示例分析

这篇文章主要介绍了Pandas文本数据处理的示例分析,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。1. 文本数据类型在pandas中存储文本数据有两种方式:object 和
2023-06-20

Golang泛型如何在函数中处理不同类型的数据?

go 泛型通过类型参数允许函数处理不同类型的数据。通过使用可比较类型参数 t,max 函数可以返回两个值中较大的那个,适用于任何可比较类型。Go 泛型:在函数中处理不同类型数据Go 泛型允许我们创建适用于多种类型的通用代码。以下是如何在
Golang泛型如何在函数中处理不同类型的数据?
2024-04-17

一文带你了解Java中基本数据类型的包装类

这篇文章将为大家详细讲解有关一文带你了解Java中基本数据类型的包装类,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。Java是面向对象的编程语言,包装类的出现更好的体现这一思想。 其次,包装
2023-05-31

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录