首页 > 编程语言 >python pandas 文本切片处理

python pandas 文本切片处理

时间:2024-01-28 09:04:16浏览次数:27  
标签:What slice 分隔 python dtype 切片 split str pandas

文本分隔
对文本的分隔和替换是最常用的文本处理方式。对文本分隔后会生成一个列表,我们对列表进行切片操作,可以找到我们想要的内容。分隔后还可以将分隔内容展开,形成单独的行。下例以下划线对内容进行了分隔,分隔后每个内容都成为一个列表。分隔对空值不起作用。
# 构造数据
s = pd.Series(['天_地_人', '你_我_他', np.nan, '风_水_火'], dtype="string")
s
'''
0 天_地_人
1 你_我_他
2 <NA>
3 风_水_火
dtype: string
'''
# 用下划线分隔
s.str.split('_')
'''
0 [天, 地, 人]
1 [你, 我, 他]
2 <NA>
3 [风, 水, 火]
dtype: object
'''
分隔后可以使用get或者[]来取出相应内容,不过[]是Python列表切片操作,更加灵活,不仅可以取出单个内容,也可以取出由多个内容组成的片段。
# 取出每行第二个
s.str.split('_').str[1]
# get只能传一个值
s.str.split('_').str.get(1)
'''
0 地
1 我
2 <NA>
3 水
dtype: object
'''
# []可以使用切片操作
s.str.split('_').str[1:3]
s.str.split('_').str[:-2]
# 如果不指定分隔符,会按空格进行分隔
s.str.split()
# 限制分隔的次数,从左开始,剩余的不分隔
s.str.split(n=2)
11.3.2 字符分隔展开
在用.str.split()将数据分隔为列表后,如果想让列表共同索引位上的值在同一列,形成一个DataFrame,可以传入expand=True,还可以通过n参数指定分隔索引位来控制形成几列,见下例:
# 分隔后展开为DataFrame
s.str.split('_', expand=True)
'''
0 1 2
0 天 地 人
1 你 我 他
2 <NA> <NA> <NA>
3 风 水 火
'''
# 指定展开列数,n为切片右值
s2.str.split('_', expand=True, n=1)
'''
0 1
0 天 地_人
1 你 我_他
2 <NA> <NA>
3 风 水_火
'''
rsplit和split一样,只不过它是从右边开始分隔。如果没有n参数,rsplit和split的输出是相同的。
# 从右分隔为两部分后展开为DataFrame
s.str.rsplit('_', expand=True, n=1)
'''
0 1
0 天_地 人
1 你_我 他
2 <NA> <NA>
3 风_水 火
'''
对于比较复杂的规则,分隔符处可以传入正则表达式:
# 数据
s = pd.Series(["你和我及他"])
# 用正则表达式代表分隔位
s.str.split(r"\和|及", expand=True)
'''
0 1 2
0 你 我 他
'''
11.3.3 文本切片选择
使用.str.slice()将指定的内容切除掉,不过还是推荐使用s.str[]来实现,这样我们只学一套内容就可以了:
s = pd.Series(["sun", "moon", "star"])
'''
0 sun
1 moon
2 star
dtype: object
'''
# 以下切掉第一个字符
s.str.slice(1)
s.str.slice(start=1)
'''
0 un
1 oon
2 tar
dtype: object
'''
以下是一些其他用法的示例:
s.str.slice() # 不做任何事
# 切除最后一个以前的,留下最后一个
s.str.slice(start=-1) # s.str[-1]
# 切除第二位以后的
s.str.slice(stop=2) # s.str[:2]
# 切除步长为2的内容
s.str.slice(step=2) # s.str[::2]
# 切除从头开始,第4位以后并且步长为3的内容
# 同s.str[0:5:3]
s.str.slice(start=0, stop=5, step=3)
11.3.4 文本划分
.str.partition可以将文本按分隔符号划分为三个部分,形成一个新的DataFrame或者相关数据类型。
# 构造数据
s = pd.Series(['How are you', 'What are you doing'])
'''
0 How are you
1 What are you doing
dtype: object
'''
# 划分为三列DataFrame
s.str.partition()
'''
0 1 2
0 How are you
1 What are you doing
'''
其他的操作方法如下:
# 从右开始划分
s.str.rpartition()
'''
0 1 2
0 How are you
1 What are you doing
'''
# 指定字符
s.str.partition("are")
'''
0 1 2
0 How are you
1 What are you doing
'''
# 划分为一个元组列
s.str.partition("you", expand=False)
'''
0 (How are , you, )
1 (What are , you, doing)
dtype: object
'''
# 对索引进行划分
idx = pd.Index(['A 123', 'B 345'])
idx.str.partition()
'''
MultiIndex([('A', ' ', '123'),
('B', ' ', '345')],
)
'''

标签:What,slice,分隔,python,dtype,切片,split,str,pandas
From: https://www.cnblogs.com/xkdn/p/17992472

相关文章

  • python pandas文本替换
    文本替换在进行数据处理时我们可以使用替换功能剔除我们不想要的内容,换成想要的内容。这在数据处理中经常使用,因为经过人工整理的数据往往不理想,需要进行替换操作。我们使用.str.replace()方法来完成这一操作。例如,对于以下一些金额数据,我们想去除货币符号,为后续转换为数字类型......
  • python pandas文本连接
    文本连接方法s.str.cat()具有文本连接的功能,可以将序列连接成一个文本或者将两个文本序列连接在一起。#文本序列s=pd.Series(['x','y','z'],dtype="string")#默认无符号连接s.str.cat()#'xyz'#用逗号连接s.str.cat(sep=',')#'x,y,z'如果序列中有空值......
  • PYTHON用时变马尔可夫区制转换(MARKOV REGIME SWITCHING)自回归模型分析经济时间序列|附
    全文下载链接:http://tecdat.cn/?p=22617最近我们被客户要求撰写关于MRS的研究报告,包括一些图形和统计输出。本文提供了一个在统计模型中使用马可夫转换模型模型的例子,来复现Kim和Nelson(1999)中提出的一些结果。它应用了Hamilton(1989)的滤波器和Kim(1994)的平滑器  %matplot......
  • python语言理解
    类python是一门面向对象的语言,强调的是对象,当我们创建一个类时,必然要给这个类赋予对应的属性去描述它,例如一个动物的类,那么这个类应该有动物种类,颜色,年龄,体重,习性等属性,代码如下:classAnimal:def__init__(self,species,color,age,weight,habitat):self.spec......
  • Python 潮流周刊第 37 期(摘要)
    本周刊由Python猫出品,精心筛选国内外的250+信息源,为你挑选最值得分享的文章、教程、开源项目、软件工具、播客和视频、热门话题等内容。愿景:帮助所有读者精进Python技术,并增长职业和副业的收入。周刊全文:https://pythoncat.top/posts/2024-01-27-weekly以下是本期摘要:......
  • 3_python第三方库
    ❓查看安装了哪些第三方库终端piplist❓更新第三方库版本pipinstall--upgrade第三方库名ERROR:pip'sdependencyresolverdoesnotcurrentlytakeintoaccountallthepackagesthatareinstalled.Thisbehaviouristhesourceofthefollowingdependencycon......
  • Python获取内存、CPU利用率,CPU温度
    最近一个项目的需求,在软件上加入硬件实时信息,大概搜索一下,没太好的结果,所以决定自己写一篇我的代码不难发现,都使用了psutil包,为什么呢,别的包我没太关注,纯粹是这台机的环境上有这个包如果大家没有这个包,使用pip工具安装一下即可,目前我还没发现兼容性问题python获取内存利用率......
  • 文本分类识别Python+卷积神经网络算法+TensorFlow模型训练+Django可视化界面
    一、介绍文本分类系统,使用Python作为主要开发语言,通过选取的中文文本数据集("体育类","财经类","房产类","家居类","教育类","科技类","时尚类","时政类","游戏类","娱乐类"),基于TensorFlow搭建CNN卷积神经网络算法模型,并进行多轮迭代训练最后得到一个识......
  • SciTech-EE-Virtual Electronics Lab: How to Create an Oscilloscope Using Python a
    https://wiki.analog.com/university/tools/m2kVirtualElectronicsLab:HowtoCreateanOscilloscopeUsingPythonandADALM2000byArnieMaeBaesandChristianGarciaDownloadPDFAbstractAvirtualelectronicslaboratoryisacollectionofsoftware-based......
  • 1、【实操】使用python脚本自动检测域名信息是否准确
    背景:因为信息安全的原因,内外网表格数据等信息不能互传,因而内外网信息表同步频率比较低,导致部分信息存在偏差。比如域名、公网地址、内网地址等在更改后,信息没有及时同步,或者更新信息的人因为手工上传导致错误,没有及时发现,倒置后期排查问题时不能及时拿到准确信息,需要沿......