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比赛,收获良多,过些时候准备进行一些全面的总结,本篇文章先谈一个比赛中用到的小技巧. 这个比赛数据中有 ...
随机推荐
- obs nginx-rtmp-module搭建流媒体服务器实现直播 ding
接下来我就简单跟大家介绍一下利用nginx来搭建流媒体服务器. 我选择的是腾讯云服务器 1.下载nginx-rtmp-module: nginx-rtmp-module的官方github地址:http ...
- C的结构体函数
#include<stdio.h> #include<string.h> struct Test { int age; ]; double score; }std1; //结构 ...
- C++中虚析构函数的作用 (转载)
转自:http://blog.csdn.net/starlee/article/details/619827 我们知道,用C++开发的时候,用来做基类的类的析构函数一般都是虚函数.可是,为什么要这样做 ...
- bzoj 3390: [Usaco2004 Dec]Bad Cowtractors牛的报复【最大生成树】
裸的最大生成树,注意判不连通情况 #include<iostream> #include<cstdio> #include<algorithm> using nam ...
- 统一微信公众号、小程序、APP的用户信息
上次接手一个项目需要整合公众号.小程序以及APP的用户,查阅了微信文档以及一些作者的文章,中间踩了不少坑,在此记录一下解决的流程. 要点 实现统一信息的有以下几点: 1. 在微信开放平台绑定需要 ...
- c# 线程浅析(代理 、Invoke、Lock)
前言:本来想根据自己的经验总结一下c#线程相关的知识点, 写之前看了一些其他人的博客,发现自己也就掌握了不到三分之一....希望通过这次的博客将自己的知识点补充一下,写出更直白的博客和初学者分享. 这 ...
- springboot运行模式
1.springboot项目常见的运行方式: 2.说明: idea:在开发环境中跑项目,也就是我们在编码过程中的用的做多的方式 jar.war:线上.服务器上执行jar.war包的方式 maven插 ...
- postgresql遇到的性能问题
问题SQL scwksmlcls.wk_cls_c , scwklrgcls.wk_lrg_cls_nm , scwkmdlcls.wk_mdl_cls_nm , scwksmlcls.wk_sml_ ...
- 带有空格或tab的字符串的判断
class test { public static void main(String[] args) { String a = " "; //带有空格的字符串 if ( a.is ...
- Java软件开发中迭代的含义
软件开发中,各个开发阶段不是顺序执行的,而各个阶段都进行迭代并行执行的,然后在进入下一个阶段的开发. 这样对于开发中的需求变化,及人员变动都能得到更好的适应. 软件开发过程汇总迭代模型如下图所示: