pandas文本处理
import pandas as pd
import numpy as np s = pd.Series(['A', 'b', 'c', 'bbhello', '', np.nan, 'hj'])
df = pd.DataFrame({'key1': list('abcdef'),
'key2': ['hee', 'fv', 'w', 'hija', '', np.nan]})
print(s)
print('-'*8)
print(df)
print('-'*8)
'''
0 A
1 b
2 c
3 bbhello
4 123
5 NaN
6 hj
dtype: object
--------
key1 key2
0 a hee
1 b fv
2 c w
3 d hija
4 e 123
5 f NaN
--------
'''
# 直接通过.str调用字符串方法,可以对Series、DataFrame使用,自动过滤NaN值
print(s.str.count('b'))
'''
0 0.0
1 1.0
2 0.0
3 2.0
4 0.0
5 NaN
6 0.0
dtype: float64
'''
print(df['key2'].str.upper())
'''
0 HEE
1 FV
2 W
3 HIJA
4 123
5 NaN
Name: key2, dtype: object
'''
# 将所有的列名改为大写
df.columns = df.columns.str.upper()
print(df)
'''
KEY1 KEY2
0 a hee
1 b fv
2 c w
3 d hija
4 e 123
5 f NaN
'''
# 字符串常用方法 --lower,upper,len,starswith,endswith print('小写,lower()',s.str.lower())
print('大写,upper()',s.str.upper())
print('长度,len()',s.str.len())
print('判断起始是否为b,startswith()',s.str.startswith('b'))
print('判断结束是否为"o",endswith()',s.str.endswith('o'))
'''
小写,lower() 0 a
1 b
2 c
3 bbhello
4 123
5 NaN
6 hj
dtype: object
大写,upper() 0 A
1 B
2 C
3 BBHELLO
4 123
5 NaN
6 HJ
dtype: object
长度,len() 0 1.0
1 1.0
2 1.0
3 7.0
4 3.0
5 NaN
6 2.0
dtype: float64
判断起始是否为b,startswith() 0 False
1 True
2 False
3 True
4 False
5 NaN
6 False
dtype: object
判断结束是否为"o",endswith() 0 False
1 False
2 False
3 True
4 False
5 NaN
6 False
dtype: object
'''
# 字符串常用方法 --strip s2 = pd.Series([' jack', 'jill ', ' jesse '])
df2 = pd.DataFrame(np.random.randn(3, 2), columns=[' A ', ' B'], index=range(3))
print(s2)
print('-'*8)
print(df2)
print('-'*8)
'''
0 jack
1 jill
2 jesse
dtype: object
--------
A B
0 -0.333042 -0.467830
1 0.605179 -0.658910
2 -0.490881 -0.639754
--------
'''
print(s2.str.strip())
print('-'*8)
print(s2.str.lstrip())
print('-'*8)
print(s2.str.rstrip())
'''
0 jack
1 jill
2 jesse
dtype: object
--------
0 jack
1 jill
2 jesse
dtype: object
--------
0 jack
1 jill
2 jesse
dtype: object
'''
df2.columns = df2.columns.str.strip()
print(df2)
'''
A B
0 -0.801508 1.650113
1 -0.669556 -1.195999
2 0.277338 -0.727100 ''' # 字符串常用方法 -- replace()
df3 = pd.DataFrame(np.random.randn(3, 2), columns=[' A a', ' B b'], index=range(3))
df3.columns = df3.columns.str.replace(' ', '-', n=2)
print(df3)
'''
-A-a -B- b
0 -1.225938 0.296270
1 0.769037 2.794032
2 -1.686818 0.109314
'''
# 字符串常用方法 -- spilt、rsplit
s4 = pd.Series(['a,b,c', '1,2,3', ['a,,,c'], np.nan])
print(s4)
print(s4.str.split(','))
'''
0 a,b,c
1 1,2,3
2 [a,,,c]
3 NaN
dtype: object
0 [a, b, c]
1 [1, 2, 3]
2 NaN
3 NaN
dtype: object
'''
# 直接索引得到一个list
# 可以使用get或[]符号访问拆散列表中的元素
print(s4.str.split(',').str[0])
print(s4.str.split(',').str.get(0))
'''
0 a
1 1
2 NaN
3 NaN
dtype: object
0 a
1 1
2 NaN
3 NaN
dtype: object
''' # 可以使用expand可以轻松扩展此操作以返回DataFrame
# n 参数限制分割数
print(s4.str.split(','))
print('-' * 8)
print(s4.str.split(',', expand=True))
'''
0 [a, b, c]
1 [1, 2, 3]
2 NaN
3 NaN
dtype: object
--------
0 1 2
0 a b c
1 1 2 3
2 NaN NaN NaN
3 NaN NaN NaN
'''
print(s4.str.split(',', expand=True, n=1))
'''
0 1
0 a b,c
1 1 2,3
2 NaN NaN
3 NaN NaN
'''
# rsplit类似于split,反向工作,即从字符串的末尾到字符串的开头
print(s4.str.split(',', expand=True, n=1))
print('-' * 8)
print(s4.str.rsplit(',', expand=True, n=1))
'''
0 1
0 a b,c
1 1 2,3
2 NaN NaN
3 NaN NaN
--------
0 1
0 a,b c
1 1,2 3
2 NaN NaN
3 NaN NaN
''' df4 = pd.DataFrame({'key1': ['a,b,c', '1,2,3', [':,,, ']],
'key2': ['a-b-c', '1-2-3', [':-.- ']]})
print(df4)
print('-'*8)
print(df4['key2'].str.split('-'))
'''
key1 key2
0 a,b,c a-b-c
1 1,2,3 1-2-3
2 [:,,, ] [:-.- ]
--------
0 [a, b, c]
1 [1, 2, 3]
2 NaN
Name: key2, dtype: object
'''
# 通过索引获取分割后的元素
df4['k201'] = df4['key2'].str.split('-').str[0]
df4['k202'] = df4['key2'].str.split('-').str[1]
df4['k203'] = df4['key2'].str.split('-').str[2]
print(df4)
'''
key1 key2 k201 k202 k203
0 a,b,c a-b-c a b c
1 1,2,3 1-2-3 1 2 3
2 [:,,, ] [:-.- ] NaN NaN NaN
'''
pandas文本处理的更多相关文章
- Pandas文本操作之读取操作
读写文本格式的数据 pandas中的解析函数 函数 说明 read_csv 从文件.url.文件型对象中加载带分隔符的数据,默认分隔符为逗号 read_table 从文件.url.文件型对象中加载带分 ...
- pynlpir + pandas 文本分析
pynlpir是中科院发布的一个分词系统,pandas(Python Data Analysis Library) 是python中一个常用的用来进行数据分析和统计的库,利用这两个库能够对中文文本数据 ...
- Pandas文本数据处理
先初始化数据 import pandas as pd import numpy as np index = pd.Index(data=["Tom", "Bob" ...
- Pandas 文本数据
Pandas针对字符串配备的一套方法,使其易于对数组的每个元素(字符串)进行操作. 1.通过str访问,且自动排除丢失/ NA值 # 通过str访问,且自动排除丢失/ NA值 s = pd.Serie ...
- Pandas: 如何将一列中的文本拆分为多行? | Python
Pandas: 如何将一列中的文本拆分为多行? 在数据处理过程中,经常会遇到以下类型的数据: 在同一列中,本该分别填入多行中的数据,被填在一行里了,然而在分析的时候,需要拆分成为多行. 在上图中,列名 ...
- Python文本数据互相转换(pandas and win32com)
(工作之后,就让自己的身心都去休息吧) 今天介绍一下文本数据的提取和转换,这里主要实例的转换为excel文件(.xlsx)转换world文件(.doc/docx),同时需要使用win32api,同py ...
- pandas 处理文本数据
import pandas as pd import numpy as np 常规的字符串操作 s = pd.Series(['A',"B","C"," ...
- 基于pandas python sklearn 的美团某商家的评论分类(文本分类)
美团店铺评价语言处理以及分类(NLP) 第一篇 数据分析部分 第二篇 可视化部分, 本文是该系列第三篇,文本分类 主要用到的包有jieba,sklearn,pandas,本篇博文主要先用的是词袋模型( ...
- 使用Pandas: str.replace() 进行文本清洗
前段时间参加了Kaggle上的Mercari Price Suggestion Challenge比赛,收获良多,过些时候准备进行一些全面的总结,本篇文章先谈一个比赛中用到的小技巧. 这个比赛数据中有 ...
随机推荐
- Codeforces Round #395 (Div. 1)
比赛链接:http://codeforces.com/contest/763 A题: #include <iostream> #include <cstdio> #includ ...
- P2610 [ZJOI2012]旅游 树的直径
这个题就是建图不太好建,但是我们一想,三角形貌似只能两两挨着,最后会变成一个二叉树,所以问题就变成求树的直径.建图用pair套map超级简单. 题干: 到了难得的暑假,为了庆祝小白在数学考试中取得的优 ...
- 每周一算法之六——KMP字符串匹配算法
KMP是一种著名的字符串模式匹配算法,它的名称来自三个发明人的名字.这个算法的一个特点就是,在匹配时,主串的指针不用回溯,整个匹配过程中,只需要对主串扫描一遍就可以了.因此适合对大字符串进行匹配. 搜 ...
- vue 简介
Vue.js是一套构建用户界面的渐进式框架.采用自底向上增量开发的设计.Vue的核心值关注视图层非常容易与其他库和已有的项目整合.另外,Vue完全有能力驱动采用单文件组件和Vue生态系统支持的库开发复 ...
- 如何在BCGControlBar工程的工具栏里面新增下拉列表控件
通常情况下,工具栏里面都是一些按钮和图片,很少可以看到下拉列表控件,但是在某些应用场合,也需要用到下拉列表控件.今天在这里就简单讲解下如何在工具栏里添加下拉列表控件. 添加的过程也比较简单,在CM ...
- Java中的锁机制,你真的了解吗?
学到锁说明你已经学过多线程了,只有在多线程并发的情况下才会涉及到锁,相信大家用的最多的要数synchronized了,因为这个也是最简单的,直接加在方法上就可以使一个方法同步.那么除了synchron ...
- 推荐一波 瀑布流的RecylceView
推荐博客:http://www.bubuko.com/infodetail-999014.html
- 400 Nth Digit 第N个数字
在无限的整数序列 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, ...中找到第 n 个数字.注意:n 是正数且在32为整形范围内 ( n < 231).示例 1:输入:3 ...
- C# 访问mongodb数据库
1.引用四个mongodb动态库MongoDB.Bson.dll,MongoDB.Driver.Core.dll,MongoDB.Driver.dll,MongoDB.Driver.Legacy.dl ...
- bootstrap3无间距栅格/grid no-gutter
<!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8&quo ...