字段抽取是根据已知列数据的开始和结束位置,抽取出新的列 字段截取函数:slice(start,stop) 注意:和数据结构的访问方式一样,开始位置是大于等于,结束位置是小于。
from pandas import read_csv
df = read_csv(
'D:\\PDA\\4.6\\data.csv'
)
#默认将电话号码按照数值型来处理了,需要先转换为字符型,astype
df['tel'] = df['tel'].astype(str)
#运营商
bands = df['tel'].str.slice(0, 3)
#地区
areas = df['tel'].str.slice(3, 7)
#号码段
nums = df['tel'].str.slice(7, 11)
#赋值回去
df['bands'] = bands
df['areas'] = areas
df['nums'] = nums
是指按照固定的字符,拆分已有字符串
字符分割函数:split(sep,n,expand=False) #类似于excel中的分列功能 参数说明 ① sep 用于分割的字符串 ② n 分割为多少列(不分割n=0,分割为两列n=1,以此类推) ③expand 是否展开为数据框,默认为False,一般都设置为True 返回值 ① 如果expand为True,则返回DataFrame ② 如果expand为False,则返回Series
from pandas import read_csv
df = read_csv(
'D:\\PDA\\4.7\\data.csv'
)
newDF = df['name'].str.split(' ', 1, True)
newDF.columns = ['band', 'name']
根据一定的条件,对数据进行抽取
记录抽取函数:dataframe[condition]
#类似于excel里的过滤功能
参数说明 ① condition 过滤的条件 返回值 ① DataFrame 常用的条件类型 大于(>),小于(<),大于等于(>=),小于等于(<=),不等于(!=)
例如:df[df.comments>10000];
#这里的范围是指>=left&<=right
例如:df[df.comments.between(1000,10000)]
例如:df[pandas.isnull(df.title)]
str.comtains(patten,na=False)
例如:df[df.title.str.contains("XX",na=False)]
其中na参数是指空值的处理方式,不匹配空值。
(1)比较运算
(2)范围运算 between(left,right)
(3)空值匹配 pandas.isnull(column)
(4)字符匹配
(5)逻辑运算
与(&),或(|),取反(not)
import pandas
df = pandas.read_csv(
'D:\\PDA\\4.8\\data.csv', sep="|"
)
#单条件
df[df.comments>10000]
#多条件
df[df.comments.between(1000, 10000)]
#过滤空值所在行
df[pandas.isnull(df.title)]
#根据关键字过滤
df[df.title.str.contains('台电', na=False)]
#~为取反
df[~df.title.str.contains('台电', na=False)]
#组合逻辑条件
df[(df.comments>=1000) & (df.comments<=10000)]