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

1.字段抽取

  • 根据已知列的开始与结束位置,抽取出新的列
  • 字段截取函数slice(start, stop)
  • slice()函数只能处理字符型数据
  • start从0开始,取值范围前闭后开。
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
from pandas import read_csv
df = read_csv(
    '/users/bakufu/desktop/4.7/data.csv'
)
屏幕快照 2018-07-01 19.52.26.png
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)]
import pandas
df = pandas.read_csv(
    '/users/bakufu/desktop/4.8/data.csv',
    sep = '|'  #分隔符是|
)
屏幕快照 2018-07-02 06.06.22.png

3.2 单条件

newDF = df[df.comments > 10000]
屏幕快照 2018-07-02 06.09.18.png

3.3 多条件

newDF = df[df.comments.between(1000, 10000)]
屏幕快照 2018-07-02 06.10.39.png

3.4 过滤空值所在行

newDF = df[pandas.isnull(df.title)]
屏幕快照 2018-07-02 06.11.48.png

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

newDF = df[~pandas.isnull(df.title)]
屏幕快照 2018-07-02 06.19.15.png

3.6 根据关键字过滤

newDF = df[df.title.str.contains('台电', na=False)]
屏幕快照 2018-07-02 06.35.20.png

3.7 ~为取反

newDF = df[~df.title.str.contains('台电', na=False)]
屏幕快照 2018-07-02 06.35.47.png

3.8 组合逻辑条件

newDF = df[(df.comments >= 1000) & (df.comments <= 10000)]
屏幕快照 2018-07-02 06.36.41.png
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,271评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,275评论 2 380
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,151评论 0 336
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,550评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,553评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,559评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,924评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,580评论 0 257
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,826评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,578评论 2 320
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,661评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,363评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,940评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,926评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,156评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,872评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,391评论 2 342

推荐阅读更多精彩内容