pandas字符串操作(上)

发布时间:2024年01月16日

目录

数据预览:

一、split分割列

1.需求:

2.完整代码展示

3.讲解

(1)分割

(2)写入

4.效果展示

二、partition分割列

1.需求:

2.完整代码展示

3.讲解

(1)分割

(2)写入

4.效果展示

三、合并列

1.需求:

2.完整代码展示

3.讲解

4.效果展示

四、get获取指定位置字符

1.需求:

2.完整代码展示

3.讲解

4.效果展示

五、slice获取指定位置字符

1.需求:

2.完整代码展示

3.讲解

4.效果展示

六、join用指定字符连接每一个字符

1.需求:

2.完整代码展示

3.讲解

4.效果展示

源数据网盘链接:


数据预览:

以下操作示例均用的此数据

一、split分割列

1.需求:

将日期列分割为年、月、日三列

2.完整代码展示

import pandas as pd
adress="D:/pandas练习文件/字符串.xlsx"
data=pd.read_excel(adress)
all_date=data['日期'].astype(str).str.split("-",expand=True)
data['年']=all_date[0]
data['月']=all_date[1]
data['日']=all_date[2]
print(data)

3.讲解

(1)分割

all_date=data['日期'].astype(str).str.split("-",expand=True)

我们首先要以一个变量接收分割的列,并且由于此函数是应用于字符串的,所以需要用astype(str)转换日期为字符串,以需求为例,我们需要按照“-”分割,即split("-",expand=True),expand=True的作用是将分割来的内容单独放在一列上,如果不写这一参数的话,分割的内容还是会在一列,只不过是以列表形式呈现,如图:

(2)写入

data['年']=all_date[0]
data['月']=all_date[1]
data['日']=all_date[2]

然后需要创建年月日三列并将数据写入,我们已经用一个变量来接收分割好的日期,那么我们可以把分割好的数据理解为一个列表中的三块内容,年这一列即为第一块all_date[0]月这一列即为第二块all_date[1]日这一列即为第三块all_date[2]。

4.效果展示

二、partition分割列

此函数不同于split,partition只能按照第一个符合分割标准的字符进行分割

1.需求:

将日期分为月日两列

2.完整代码展示

import pandas as pd
adress="D:/pandas练习文件/字符串.xlsx"
data=pd.read_excel(adress)
all_date=data['日期'].astype(str).str.partition('-')
data['年']=all_date[0]
data['月日']=all_date[2]
print(data)

3.讲解

过程大概和split是一样的,都是先分割再写入

(1)分割

all_date=data['日期'].astype(str).str.partition('-')

我们仍然以一个变量接收分割的列,转换日期为字符串?,以“-”作为分割标准。

(2)写入

data['年']=all_date[0]
data['月日']=all_date[2]

大家看到我标红部分的时候是否感到奇怪:月日不应该是all_date[1]吗?大家看下图就明白了

对,partition方法和split的另一个不同就是这里了,split中作为分割标准的“-”是直接省略不写的,然而在partition中分隔符却是自称一列,所以all_date[1]代表的是“-”,而不是我们需要的月日,月日应该是all_date[2]

4.效果展示

三、合并列

1.需求:

将省、市、区三列合并为一列

2.完整代码展示

import pandas as pd
adress="D:/pandas练习文件/字符串.xlsx"
data=pd.read_excel(adress)
data['地址']=data['省']+data['市']+data['区']
print(data)

3.讲解

此效果的实现是非常简单的,只需要将要合并的列用“+”相加

4.效果展示

四、get获取指定位置字符

1.需求:

比如我想知道大家的年龄都是几十,20+?30?40+?即我们需要提取年龄的第一个数

2.完整代码展示

import pandas as pd
adress="D:/pandas练习文件/字符串.xlsx"
data=pd.read_excel(adress)
data["年龄第一个数"]=data['年龄'].astype(str).str.get(0)
print(data)

3.讲解

data["年龄第一个数"]=data['年龄'].astype(str).str.get(0)

由于年龄列的类型是int,所以我们首先应该将其转换为字符串类型,然后利用get(0)获取第一个数?

4.效果展示

五、slice获取指定位置字符

1.需求:

获取日期列中的月日

2.完整代码展示

import pandas as pd
adress="D:/pandas练习文件/字符串.xlsx"
data=pd.read_excel(adress)
data["月日"]=data['日期'].astype(str).str.slice(5,10)
print(data)

3.讲解

data["月日"]=data['日期'].astype(str).str.slice(5,10)

第一步仍然是将日期转换为字符串类型,slice这一函数和get的不同在于get只能获取一个字符,而slice可以获取多个slice(起始位置,结束位置,步长),其中所取字符不包括结束位置的字符,而且用slice_replace(起始位置,结束位置,替换值)还能替换选中位置的字符

4.效果展示

六、join用指定字符连接每一个字符

1.需求:

将姓名中的每个字用“*”连接(这个需求可能看着不合理,但是我也实在想不出这个函数有什么应用场景了,大家如果有好的想法可以在评论区告诉我哦~)

2.完整代码展示

import pandas as pd
adress="D:/pandas练习文件/字符串.xlsx"
data=pd.read_excel(adress)
data["姓名2"]=data['姓名'].str.join("*")
print(data)

3.讲解

data["姓名2"]=data['姓名'].str.join("*")

这个函数应用很简单,只需要将想要设置的连接字符写入即可?

4.效果展示

源数据网盘链接:

链接:https://pan.baidu.com/s/1xeCmsDTcEHa6rRjJJVGu6g?
提取码:1234

文章来源:https://blog.csdn.net/2302_80061155/article/details/135623924
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。