pandas 文本处理 - split

在学习 pandas的apply函数时看到这么一篇文章
https://blog.csdn.net/mochou111/article/details/95311065

以下为原文代码及运行结果

import pandas as pd
#先生成一个dataframe
d = {"col1" : ["96%(1368608/1412722)",
"97%(1389916/1427922)",
"97%(1338695/1373803)",
"96%(1691941/1745196)",
"95%(1878802/1971608)",
"97%(944218/968845)",
"96%(1294939/1336576)"]}
df1 = pd.DataFrame(d)
 
#切分原文中识别率总数,采用apply + 匿名函数
#lambda 函数的意思是选取x的序列值 ,比如 x[6:9]
#index函数的意思是把当前字符位置转变为所在位置的位数
#-1是最后一位
df1['正确数'] = df1.iloc[:,0].apply(lambda x : x[x.index('(') + 1 : x.index('/')])
df1['总数'] = df1.iloc[:,0].apply(lambda x : x[x.index('/') + 1 : -1])
df1['正确率'] = df1.iloc[:,0].apply(lambda x : x[:x.index('(')])
df1

pandas 文本处理 - split_第1张图片

这个其实就是个文本切分操作,如果采用pandas自带的文本处理工具,可以很轻松得到结果

df1 = df1.col1.str.replace("\(|\)","/").str.split("/",expand=True)

pandas 文本处理 - split_第2张图片
这里存在一个小bug,数据中切分多出来一列,可以将原数据中的 ()替换成空格,

df1.col1 = df1.col1.str.replace("\(|\)|/"," ")

pandas 文本处理 - split_第3张图片

同时限制切分次数

df1.col1.str.split(" ",expand=True, n=2)

pandas 文本处理 - split_第4张图片

讲究点再做一次strip操作去除多余空格,再改改标题名。

总结:

文字有文字的处理办法,pandas 中 .str 可以得到文字属性,然后进行文字处理,处理方法和python自带的str函数大多相同。

你可能感兴趣的:(python,python,字符串)