Pandas学习笔记--文本数据

一、string类型的性质

  1. string与object的区别
    string类型和object不同之处有三:
    ① 字符存取方法(string accessor methods,如str.count)会返回相应数据的Nullable类型,而object会随缺失值的存在而改变返回类型
    ② 某些Series方法不能在string上使用,例如: Series.str.decode(),因为存储的是字符串而不是字节
    ③ string类型在缺失值存储或运算时,类型会广播为pd.NA,而不是浮点型np.nan

  2. string类型的转换
    当下正确的方法是分两部转换,先转为str型object,在转为string类型:

import pandas as pd
import numpy as np
pd.Series([1,'1.']).astype('str').astype('string')
0     1
1    1.
dtype: string

二、拆分与拼接

主要有str.split和str.cat两种方法
拆分有 str.split方法,拼接用str.cat
str.split:

s = pd.Series(['a_b_c', 'c_d_e', np.nan, 'f_g_h'], dtype="string")
s
0    a_b_c
1    c_d_e
2     <NA>
3    f_g_h
dtype: string
s.str.split('_')
0    [a, b, c]
1    [c, d, e]
2         <NA>
3    [f, g, h]
dtype: object
pd.Series(['a_b_c', ['a','b','c']]).str[1]
0    _
1    b
dtype: object

str.split方法中expand参数控制了是否将列拆开,n参数代表最多分割多少次

s.str.split('_',expand=True,n=1)
01
0ab_c
1cd_e
2<NA><NA>
3fg_h

str.cat方法

s = pd.Series(['ab',None,'d'],dtype='string')
s
0      ab
1    <NA>
2       d
dtype: string
s.str.cat()
'abd'
s.str.cat(na_rep='*')
'ab*d'
s2 = pd.Series(['24',None,None],dtype='string')
s2
s.str.cat(s2)
0    ab24
1    <NA>
2    <NA>
dtype: string
s2 = pd.Series(list('abc'),index=[1,2,3],dtype='string')
s2
1    a
2    b
3    c
dtype: string

三、替换

广义上的替换,就是指str.replace函数的应用,fillna是针对缺失值的替换

s = pd.Series(['A', 'B', 'C', 'Aaba', 'Baca','', np.nan, 'CABA', 'dog', 'cat'],dtype="string")
s
0       A
1       B
2       C
3    Aaba
4    Baca
5        
6    <NA>
7    CABA
8     dog
9     cat
dtype: string
s.str.replace(r'^[AB]','***')#以A或者B开头的替换
0       ***
1       ***
2         C
3    ***aba
4    ***aca
5          
6      <NA>
7      CABA
8       dog
9       cat
dtype: string
s.str.replace(r'([ABC])(\w+)',lambda x:x.group(2)[1:]+'*')
0       A
1       B
2       C
3     ba*
4     ca*
5        
6    <NA>
7     BA*
8     dog
9     cat
dtype: string

str.replace的注意事项
首先,要明确str.replace和replace并不是一个东西:
str.replace针对的是object类型或string类型,默认是以正则表达式为操作,目前暂时不支持DataFrame上使用¶
replace针对的是任意类型的序列或数据框,如果要以正则表达式替换,需要设置regex=True,该方法通过字典可支持多列替换

四、子串匹配与提取

主要有下面几种方法

  1. str.extract方法
  2. str.extractall方法
    与extract只匹配第一个符合条件的表达式不同,extractall会找出所有符合条件的字符串,并建立多级索引
  3. str.contains和str.match
    前者的作用为检测是否包含某种正则模式
    str.match与其区别在于,match依赖于python的re.match,检测内容为是否从头开始包含该正则模式
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值