import pandas as pd
import numpy as np

常规的字符串操作

s = pd.Series(['A',"B","C","AaBa","Baca",np.nan,'dog','cat'])
s
0       A
1 B
2 C
3 AaBa
4 Baca
5 NaN
6 dog
7 cat
dtype: object
s.str.lower()
0       a
1 b
2 c
3 aaba
4 baca
5 NaN
6 dog
7 cat
dtype: object
s.str.upper()
0       A
1 B
2 C
3 AABA
4 BACA
5 NaN
6 DOG
7 CAT
dtype: object
s.str.len()
0    1.0
1 1.0
2 1.0
3 4.0
4 4.0
5 NaN
6 3.0
7 3.0
dtype: float64
idx = pd.Index([' jack','jill ',' jesse','frank'])
idx.str.strip() # 去掉左右两边的空白符
Index(['jack', 'jill', 'jesse', 'frank'], dtype='object')
idx.str.lstrip()  #  左去掉空白字符
Index(['jack', 'jill ', 'jesse', 'frank'], dtype='object')
idx.str.rstrip()  # 去掉右边的空白符
Index([' jack', 'jill', ' jesse', 'frank'], dtype='object')
df = pd.DataFrame(np.random.randn(3,2),columns=[' Column A ',' Column B '],index=range(3))
df

.dataframe tbody tr th:only-of-type {
vertical-align: middle;
}

.dataframe tbody tr th {
vertical-align: top;
} .dataframe thead th {
text-align: right;
}
Column A Column B
0 0.048811 -1.097950
1 -1.099516 -0.514286
2 0.984136 -1.027790
df.columns.str.strip()
Index(['Column A', 'Column B'], dtype='object')
df.columns.str.lower()
Index([' column a ', ' column b '], dtype='object')
df.columns = df.columns.str.strip().str.lower().str.replace(' ',"_")
df

.dataframe tbody tr th:only-of-type {
vertical-align: middle;
}

.dataframe tbody tr th {
vertical-align: top;
} .dataframe thead th {
text-align: right;
}
column_a column_b
0 0.048811 -1.097950
1 -1.099516 -0.514286
2 0.984136 -1.027790

分割与替换字符

str.split 操作
s2 = pd.Series(['a_b_c',"c_D_e",np.nan,'f_g_H'])
s2.str.split("_")
0    [a, b, c]
1 [c, D, e]
2 NaN
3 [f, g, H]
dtype: object
s2.str.split('_')[1]
['c', 'D', 'e']
s2.str.split('_').str[1] # 切割之后的Series,通过str方法可以得到新的数据
0      b
1 D
2 NaN
3 g
dtype: object
s2.str.split('_').str.get(1)
0      b
1 D
2 NaN
3 g
dtype: object
s2.str.split('_',expand=True,n=1) # expand 参数,通过可以通过n确定延伸的次数

.dataframe tbody tr th:only-of-type {
vertical-align: middle;
}

.dataframe tbody tr th {
vertical-align: top;
} .dataframe thead th {
text-align: right;
}
0 1
0 a b_c
1 c D_e
2 NaN NaN
3 f g_H
s2.str.rsplit('_',expand=True,n=1) # rsplit 方法

.dataframe tbody tr th:only-of-type {
vertical-align: middle;
}

.dataframe tbody tr th {
vertical-align: top;
} .dataframe thead th {
text-align: right;
}
0 1
0 a_b c
1 c_D e
2 NaN NaN
3 f_g H
str.replace操作
s3 = pd.Series(['A',"B","C","AaBa","Baca",np.nan,"CABA","dog","cat"])
s3
0       A
1 B
2 C
3 AaBa
4 Baca
5 NaN
6 CABA
7 dog
8 cat
dtype: object
s3.str.replace('^.a|dog','XX_XX',case=False)  # 替换第二个字符是a或者dog的字符串,忽略大小写,关于正则表达式的内容篇幅很大
0          A
1 B
2 C
3 XX_XXBa
4 XX_XXca
5 NaN
6 XX_XXBA
7 XX_XX
8 XX_XXt
dtype: object
dollars = pd.Series(['12', '-$10', '$10,000'])
dollars.str.replace('$', '') # replace $ to ''
0        12
1 -10
2 10,000
dtype: object
dollars.str.replace("-$",'-')  #  doesn't work
0         12
1 -$10
2 $10,000
dtype: object
dollars.str.replace(r'-\$','-')
# 转义 原字符-\$ 替换成'-'
0         12
1 -10
2 $10,000
dtype: object
dollars.str.replace('-\$', '-')
0         12
1 -10
2 $10,000
dtype: object
str.cat操作
s = pd.Series(['A',"B","C","D"])
s.str.cat(sep=',')
'A,B,C,D'
s.str.cat()
'ABCD'
t = pd.Series(['a', 'b', np.nan, 'd'])
t.str.cat(sep=',',na_rep='_')
'a,b,_,d'
s.str.cat(['a',"b","c","d"])
0    Aa
1 Bb
2 Cc
3 Dd
dtype: object
pd.Series(['a1', 'b2', 'c3']).str.extract('(?P<letter>[ab])(?P<digit>\d)', expand=False)#  组命名?P

.dataframe tbody tr th:only-of-type {
vertical-align: middle;
}

.dataframe tbody tr th {
vertical-align: top;
} .dataframe thead th {
text-align: right;
}
letter digit
0 a 1
1 b 2
2 NaN NaN
match or contain操作
pattern = r'[0-9][a-z]'
pd.Series(['1','2','3a','3b','03c']).str.contains(pattern)# 包含数字字母的文本
0    False
1 False
2 True
3 True
4 True
dtype: bool
pd.Series(['1','2','3a','3b','03c']).str.match(pattern)# 匹配数字字母的文本
0    False
1 False
2 True
3 True
4 False
dtype: bool
其他的方法,可以参考官方文档中的方法函数

pandas 处理文本数据的更多相关文章

  1. Python文本数据互相转换(pandas and win32com)

    (工作之后,就让自己的身心都去休息吧) 今天介绍一下文本数据的提取和转换,这里主要实例的转换为excel文件(.xlsx)转换world文件(.doc/docx),同时需要使用win32api,同py ...

  2. pandas处理大文本数据

    当数据文件是百万级数据时,设置chunksize来分批次处理数据 案例:美国总统竞选时的数据分析 读取数据 import numpy as np import pandas as pdfrom pan ...

  3. 如何使用 scikit-learn 为机器学习准备文本数据

    欢迎大家前往云+社区,获取更多腾讯海量技术实践干货哦~ 文本数据需要特殊处理,然后才能开始将其用于预测建模. 我们需要解析文本,以删除被称为标记化的单词.然后,这些词还需要被编码为整型或浮点型,以用作 ...

  4. 机器学习入门-文本数据-构造词频词袋模型 1.re.sub(进行字符串的替换) 2.nltk.corpus.stopwords.words(获得停用词表) 3.nltk.WordPunctTokenizer(对字符串进行分词操作) 4.np.vectorize(对函数进行向量化) 5. CountVectorizer(构建词频的词袋模型)

    函数说明: 1. re.sub(r'[^a-zA-Z0-9\s]', repl='', sting=string)  用于进行字符串的替换,这里我们用来去除标点符号 参数说明:r'[^a-zA-Z0- ...

  5. 【tensorflow2.0】处理文本数据

    一,准备数据 imdb数据集的目标是根据电影评论的文本内容预测评论的情感标签. 训练集有20000条电影评论文本,测试集有5000条电影评论文本,其中正面评论和负面评论都各占一半. 文本数据预处理较为 ...

  6. Bulk Insert:将文本数据(csv和txt)导入到数据库中

    将文本数据导入到数据库中的方法有很多,将文本格式(csv和txt)导入到SQL Server中,bulk insert是最简单的实现方法 1,bulk insert命令,经过简化如下 BULK INS ...

  7. JAVASE02-Unit08: 文本数据IO操作 、 异常处理

    Unit08: 文本数据IO操作 . 异常处理 * java.io.ObjectOutputStream * 对象输出流,作用是进行对象序列化 package day08; import java.i ...

  8. JAVASE02-Unit07: 基本IO操作 、 文本数据IO操作

    基本IO操作 . 文本数据IO操作 java标准IO(input/output)操作 package day07; import java.io.FileOutputStream; import ja ...

  9. 10、NFC技术:读写NFC标签中的文本数据

    代码实现过程如下: 读写NFC标签的纯文本数据.java import java.nio.charset.Charset; import java.util.Locale; import androi ...

随机推荐

  1. jQuery 学习(1)——认识jQuery

    1.下载 下载地址:http://jquery.com/download/ jquery-3.2.1.js——用于开发和学习(229K) jquery-3.2.1.min.js——用于项目和产品(31 ...

  2. SpringMVC整合FastJson:用"最快的json转换工具"替换SpringMVC的默认json转换

    2017年11月23日 09:18:03 阅读数:306 一.环境说明 Windows 10 1709 Spring 4.3.12.RELEASE FastJson 1.2.40 IDEA 2017. ...

  3. Reactor反应器模式 (epoll)

    1. 背景 最近在看redis源码,主体流程看完了. 在网上看到了reactor模式,看了一下,其实我们经常使用这种模式. 2. 什么是reactor模式 反应器设计模式(Reactor patter ...

  4. HTML动画 request animation frame

    在网页中,实现动画无外乎两种方式.1. CSS3 方式,也就是利用浏览器对CSS3 的原生支持实现动画:2. 脚本方式,通过间隔一段时间用JavaScript 来修改页面元素样式来实现动画.接下来我们 ...

  5. 20190131 经验总结:如何从rst文件编译出自己的sqlalchemy的文档

    20190131 经验总结:如何编译sqlalchemy的文档 起因 www.sqlalchemy.org官网上不去了,不管是直接上,还是用代理都不行. sqlalchemy属于常用工具,看不到官方的 ...

  6. 基于nginx+xxl-job+springboot高可用分布式任务调度系统

    技术.原理讲解: <分布式任务调度平台XXL-JOB--源码解析一:项目介绍> <分布式任务调度平台XXL-JOB--源码解析二:基于docker搭建admin调度中心和execut ...

  7. SpringBoot(十一):springboot2.0.2下配置mybatis generator环境,并自定义字段/getter/settetr注释

    Mybatis Generator是供开发者在mybatis开发时,快速构建mapper xml,mapper类,model类的一个插件工具.它相对来说对开发者是有很大的帮助的,但是它也有不足之处,比 ...

  8. Centos PHP+Apache执行exec()等Linux脚本权限设置的详细步骤

    1. 查看一下你的Apache的执行用户是谁: lsof -i:80         运行之后的结果为: 从图中我们可以清楚的看到,httpd(也就是Apache)的执行用户为:exec_shell( ...

  9. VMWare 虚机迁移后Linux系统网卡启动问题

    重新安装VMWare或拷贝虚机文件后有时网卡会无法工作,主要是因为网卡的Mac地址改变了,如果系统中的网卡配置信息中有Mac的信息,则虚机的系统的网卡可能无法正常工作. 如果出现上述问题,解决办法如下 ...

  10. ios 容错处理JKDataHelper和AvoidCrash

    一.JKDataHelper 在大团队协同开发过程中,由于每个团队成员的水平不一,很难控制代码的质量,保证代码的健壮性,经常会发生由于后台返回异常数据造成app崩溃闪退的情况,为了避免这样情况使用JK ...