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文本处理的更多相关文章

  1. Pandas文本操作之读取操作

    读写文本格式的数据 pandas中的解析函数 函数 说明 read_csv 从文件.url.文件型对象中加载带分隔符的数据,默认分隔符为逗号 read_table 从文件.url.文件型对象中加载带分 ...

  2. pynlpir + pandas 文本分析

    pynlpir是中科院发布的一个分词系统,pandas(Python Data Analysis Library) 是python中一个常用的用来进行数据分析和统计的库,利用这两个库能够对中文文本数据 ...

  3. Pandas文本数据处理

    先初始化数据 import pandas as pd import numpy as np index = pd.Index(data=["Tom", "Bob" ...

  4. Pandas 文本数据

    Pandas针对字符串配备的一套方法,使其易于对数组的每个元素(字符串)进行操作. 1.通过str访问,且自动排除丢失/ NA值 # 通过str访问,且自动排除丢失/ NA值 s = pd.Serie ...

  5. Pandas: 如何将一列中的文本拆分为多行? | Python

    Pandas: 如何将一列中的文本拆分为多行? 在数据处理过程中,经常会遇到以下类型的数据: 在同一列中,本该分别填入多行中的数据,被填在一行里了,然而在分析的时候,需要拆分成为多行. 在上图中,列名 ...

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

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

  7. pandas 处理文本数据

    import pandas as pd import numpy as np 常规的字符串操作 s = pd.Series(['A',"B","C"," ...

  8. 基于pandas python sklearn 的美团某商家的评论分类(文本分类)

    美团店铺评价语言处理以及分类(NLP) 第一篇 数据分析部分 第二篇 可视化部分, 本文是该系列第三篇,文本分类 主要用到的包有jieba,sklearn,pandas,本篇博文主要先用的是词袋模型( ...

  9. 使用Pandas: str.replace() 进行文本清洗

    前段时间参加了Kaggle上的Mercari Price Suggestion Challenge比赛,收获良多,过些时候准备进行一些全面的总结,本篇文章先谈一个比赛中用到的小技巧. 这个比赛数据中有 ...

随机推荐

  1. 【JSOI 2008】 最小生成树计数

    [题目链接] 点击打开链接 [算法] 笔者做这题参考了这篇博客 : https://blog.sengxian.com/solutions/bzoj-1016 推荐阅读 首先,我们需要知道三个定理 : ...

  2. Python中关键字global与nonlocal的区别

    版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/xCyansun/article/details/79672634终于下定决心学习Python了.既然 ...

  3. Flask中的ThreadLocal本地线程,上下文管理

    先说一下和flask没有关系的: 我们都知道线程是由进程创建出来的,CPU实际执行的也是线程,那么线程其实是没有自己独有的内存空间的,所有的线程共享进程的资源和空间,共享就会有冲突,对于多线程对同一块 ...

  4. IOS程序运行过程

    IOS程序是从main开始运行的,main.m文件内容如下: #import <UIKit/UIKit.h> #import "AppDelegate.h" int m ...

  5. Asp.Net 文件下载1——流下载(适用于大文件且防盗链)(转)

    使用流防盗链下载大文件 直接上 Asp.net 后置代码好了 using System; using System.Data; using System.Configuration; using Sy ...

  6. Windows Java环境变量配置

    安装步骤略过... 环境变量配置 新建环境变量: JAVA_HOME C:\Program Files\Java\jdk1.6 将路径替换为自己的安装路径.    新建环境变量: classpath ...

  7. mybatis时间查询小技巧

     网上大多数使用mybatis查询的时候都是把时间转换成Date使用的,其实这里时可以直接使用String的,比如 <if test="startTime != null and st ...

  8. php可以定义数组的常量吗

    是这样吗?<?php define('BEST_PHPER',array('name'=>'巩文','address'=>'china')); My God,明确告诉你不可以:原因是 ...

  9. 数据传递-------ajaxJson------spring3mvc中使用ajax传json中文乱码解决

    参考来源:http://blog.csdn.net/dangerous_fire/article/details/25904225 第一种解决方法,适用所有情况 因为在controller中返回jso ...

  10. CDH搭建Hadoop分布式服务器集群(java新手小白)

    1首先对于一个java还白的小白,先理解CDH与Hadoop的关系 一.Hadoop版本选择. Hadoop大致可分为Apache Hadoop和第三方发行第三方发行版Hadoop,考虑到Hadoop ...