目录
以下操作示例均用的此数据
将日期列分割为年、月、日三列
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)
all_date=data['日期'].astype(str).str.split("-",expand=True)
我们首先要以一个变量接收分割的列,并且由于此函数是应用于字符串的,所以需要用astype(str)转换日期为字符串,以需求为例,我们需要按照“-”分割,即split("-",expand=True),expand=True的作用是将分割来的内容单独放在一列上,如果不写这一参数的话,分割的内容还是会在一列,只不过是以列表形式呈现,如图:
data['年']=all_date[0] data['月']=all_date[1] data['日']=all_date[2]
然后需要创建年月日三列并将数据写入,我们已经用一个变量来接收分割好的日期,那么我们可以把分割好的数据理解为一个列表中的三块内容,年这一列即为第一块all_date[0],月这一列即为第二块all_date[1],日这一列即为第三块all_date[2]。
此函数不同于split,partition只能按照第一个符合分割标准的字符进行分割
将日期分为年、月日两列
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)
过程大概和split是一样的,都是先分割再写入
all_date=data['日期'].astype(str).str.partition('-')
我们仍然以一个变量接收分割的列,转换日期为字符串?,以“-”作为分割标准。
data['年']=all_date[0] data['月日']=all_date[2]
大家看到我标红部分的时候是否感到奇怪:月日不应该是all_date[1]吗?大家看下图就明白了
对,partition方法和split的另一个不同就是这里了,split中作为分割标准的“-”是直接省略不写的,然而在partition中分隔符却是自称一列,所以all_date[1]代表的是“-”,而不是我们需要的月日,月日应该是all_date[2]
将省、市、区三列合并为一列
import pandas as pd
adress="D:/pandas练习文件/字符串.xlsx"
data=pd.read_excel(adress)
data['地址']=data['省']+data['市']+data['区']
print(data)
此效果的实现是非常简单的,只需要将要合并的列用“+”相加
比如我想知道大家的年龄都是几十,20+?30?40+?即我们需要提取年龄的第一个数
import pandas as pd
adress="D:/pandas练习文件/字符串.xlsx"
data=pd.read_excel(adress)
data["年龄第一个数"]=data['年龄'].astype(str).str.get(0)
print(data)
data["年龄第一个数"]=data['年龄'].astype(str).str.get(0)
由于年龄列的类型是int,所以我们首先应该将其转换为字符串类型,然后利用get(0)获取第一个数?
获取日期列中的月日
import pandas as pd
adress="D:/pandas练习文件/字符串.xlsx"
data=pd.read_excel(adress)
data["月日"]=data['日期'].astype(str).str.slice(5,10)
print(data)
data["月日"]=data['日期'].astype(str).str.slice(5,10)
第一步仍然是将日期转换为字符串类型,slice这一函数和get的不同在于get只能获取一个字符,而slice可以获取多个,slice(起始位置,结束位置,步长),其中所取字符不包括结束位置的字符,而且用slice_replace(起始位置,结束位置,替换值)还能替换选中位置的字符
将姓名中的每个字用“*”连接(这个需求可能看着不合理,但是我也实在想不出这个函数有什么应用场景了,大家如果有好的想法可以在评论区告诉我哦~)
import pandas as pd
adress="D:/pandas练习文件/字符串.xlsx"
data=pd.read_excel(adress)
data["姓名2"]=data['姓名'].str.join("*")
print(data)
data["姓名2"]=data['姓名'].str.join("*")
这个函数应用很简单,只需要将想要设置的连接字符写入即可?
链接:https://pan.baidu.com/s/1xeCmsDTcEHa6rRjJJVGu6g?
提取码:1234