前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >04.字段抽取/拆分&记录抽取1.字段抽取2.字段拆分3.记录抽取

04.字段抽取/拆分&记录抽取1.字段抽取2.字段拆分3.记录抽取

作者头像
用户1250179
发布2018-08-02 16:33:45
1.4K0
发布2018-08-02 16:33:45
举报
文章被收录于专栏:数说戏聊数说戏聊

1.字段抽取

  • 根据已知列的开始与结束位置,抽取出新的列
  • 字段截取函数slice(start, stop)
  • slice()函数只能处理字符型数据
  • start从0开始,取值范围前闭后开。
代码语言:javascript
复制
from pandas import read_csv
df = read_csv(
    '/users/bakufu/desktop/4.6/data.csv'        
)
Out[65]: 
           tel
0  18922254812
1  13522255003
2  13422259938
3  18822256753
4  18922253721
5  13422259313
6  13822254373
7  13322252452
8  18922257681

#使用`astype()`函数将数据转换为str型,并重新赋给原值
df['tel'] = df['tel'].astype(str)
Out[68]: 
0    18922254812
1    13522255003
2    13422259938
3    18822256753
4    18922253721
5    13422259313
6    13822254373
7    13322252452
8    18922257681
Name: tel, dtype: object

#截取运营商数值
bands = df['tel'].str.slice(0, 3)
Out[70]: 
0    189
1    135
2    134
3    188
4    189
5    134
6    138
7    133
8    189
Name: tel, dtype: object

#截取地区数值
areas = df['tel'].str.slice(3, 7)
Out[72]: 
0    2225
1    2225
2    2225
3    2225
4    2225
5    2225
6    2225
7    2225
8    2225
Name: tel, dtype: object

#截取号码段数值
nums = df['tel'].str.slice(7, 11)
Out[74]: 
0    4812
1    5003
2    9938
3    6753
4    3721
5    9313
6    4373
7    2452
8    7681
Name: tel, dtype: object

#赋值回去,原值由Series转换为DataFrame,并生成新的三列
df['bands'] = bands
df['areas'] = areas
df['nums'] = nums
Out[76]: 
           tel bands areas  nums
0  18922254812   189  2225  4812
1  13522255003   135  2225  5003
2  13422259938   134  2225  9938
3  18822256753   188  2225  6753
4  18922253721   189  2225  3721
5  13422259313   134  2225  9313
6  13822254373   138  2225  4373
7  13322252452   133  2225  2452
8  18922257681   189  2225  7681

2.字段拆分

  • 按固定的字符,拆分已有字符串
  • 字段分隔函数split(sep, n, expand=False)

参数说明

  • sep:用于分割的字符串
  • n:分割为多少列,从0开始,如设置为0,即拆分为1列;如设置为1,则拆分为2列
  • expand:是否展开为数据框,默认为False

expand返回值:

  • 如expand为True,返回DataFrame
  • 如expand为False,返回Series
代码语言:javascript
复制
from pandas import read_csv
df = read_csv(
    '/users/bakufu/desktop/4.7/data.csv'
)

屏幕快照 2018-07-01 19.52.26.png

代码语言:javascript
复制
newDF = df['name'].str.split(' ', 1, True)
newDF.columns = ['band', 'name']

屏幕快照 2018-07-01 19.52.00.png

3.记录抽取

  • 根据一定条件对数据进行抽取
  • 记录抽取函数dataframe[condition]
  • 参数说明:condition 过滤对条件
  • 返回值:DataFrame
  • 类似于Excel对过滤功能

3.1 记录抽取常用的条件类型

  • 比较运算:> < >= <= != 例:df[df.comments>10]
  • 范围运算:between(left, right) 取值范围前闭后闭 例:df[df.comments.between(10, 100)]
  • 空值匹配:pandas.isnull(column) 例:df[pandas.isnull(df.title)]
  • 字符匹配:str.contains(patten, na=False) 例:df[df.title.str.contains('台电', na=False)]
  • 逻辑运算:与(&) 或(|) 取反(not) 例:df[(df.comments >= 10) & (df.comments <= 100)]
代码语言:javascript
复制
import pandas
df = pandas.read_csv(
    '/users/bakufu/desktop/4.8/data.csv',
    sep = '|'  #分隔符是|
)

屏幕快照 2018-07-02 06.06.22.png

3.2 单条件

代码语言:javascript
复制
newDF = df[df.comments > 10000]

屏幕快照 2018-07-02 06.09.18.png

3.3 多条件

代码语言:javascript
复制
newDF = df[df.comments.between(1000, 10000)]

屏幕快照 2018-07-02 06.10.39.png

3.4 过滤空值所在行

代码语言:javascript
复制
newDF = df[pandas.isnull(df.title)]

屏幕快照 2018-07-02 06.11.48.png

3.5 过滤空值所在行后取反~

代码语言:javascript
复制
newDF = df[~pandas.isnull(df.title)]

屏幕快照 2018-07-02 06.19.15.png

3.6 根据关键字过滤

代码语言:javascript
复制
newDF = df[df.title.str.contains('台电', na=False)]

屏幕快照 2018-07-02 06.35.20.png

3.7 ~为取反

代码语言:javascript
复制
newDF = df[~df.title.str.contains('台电', na=False)]

屏幕快照 2018-07-02 06.35.47.png

3.8 组合逻辑条件

代码语言:javascript
复制
newDF = df[(df.comments >= 1000) & (df.comments <= 10000)]

屏幕快照 2018-07-02 06.36.41.png

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2018.07.01 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1.字段抽取
  • 2.字段拆分
  • 3.记录抽取
    • 3.1 记录抽取常用的条件类型
      • 3.2 单条件
        • 3.3 多条件
          • 3.4 过滤空值所在行
            • 3.5 过滤空值所在行后取反~
              • 3.6 根据关键字过滤
                • 3.7 ~为取反
                  • 3.8 组合逻辑条件
                  领券
                  问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档