数据处理之字符串操作

字段抽取

字段抽取是指根据已知的字段抽取你想要的其中一部分组成新的列,主要是靠slice()函数来实现,主要有startstop两个参数,我们都知道开始位置从0开始,结束位置为n-1。
下面我们以手机号码为例子做个字段截取, 首先导入文件:

# -*- coding: utf-8 -*-
import pandas as pd 
df = pd.read_csv(r'/Users/herenyi/Downloads/4/4.6/data.csv', encoding = 'UTF-8');

然后转化整数型到字符型,并作新列。

df['newtel'] = df['tel'].astype(str);

然后进行三段截取,一般手机号码前三位数字为运营商,中间四位为地区,后四位才为号码段。

#运营商
bands = df['newtel'].str.slice(0, 3);
#地区
areas = df['newtel'].str.slice(3, 7);
#号码段
nums = df['newtel'].str.slice(7, 11);

以下我们列下号码段结果。

nums
Out[51]: 
0    4812
1    5003
2    9938
3    6753
4    3721
5    9313
6    4373
7    2452
8    7681
Name: newtel, dtype: object

字段拆分

首先还是熟悉的导入文件

df = pd.read_csv(r"/Users/herenyi/Downloads/4/4.7/data.csv",encoding = 'UTF-8')

然后进行拆分,split主要有三个参数,sep分隔符,我们这次使用的是空格‘ ’,以及n为分割多少次,默认下有分隔符的地方都拆分,还有expand拓展框,默认为False,也就是Series序列输出,如果要Dataframe输出,则改为True。

newdF = df['name'].str.split(' ', 1, True)

最后给给定新的列名

newdF.columns = ['brand', 'name']

字段合并

字段合并是字段拆分的逆操作,是指将同一个数据框下的不同列进行合并形成新的列的过程。具体实现如下:

df = pd.read_csv(
     r"/Users/herenyi/Downloads/4/4.11/data.csv", 
     sep=" ", 
     names=['band', 'area', 'num'])
df = df.astype(str)
tel = df['band'] + df['area'] + df['num']

字段匹配

不同结构的数据框按照外键进行联结(例如ID,类似Excel的Vlookup函数,在python中具体由merge(x, y, left_on, right_on)函数来实现,xy分别代表表一表二,后面两个参数为表一表二用于联结的列。

items = pd.read_csv(
    r"/Users/herenyi/Downloads/4/4.12/data1.csv", 
    sep='|', 
    names=['id', 'comments', 'title']
);
prices = pd.read_csv(
    r"/Users/herenyi/Downloads/4/4.12/data2.csv", 
    sep='|', 
    names=['id', 'oldPrice', 'nowPrice']
);
itemPrices = pd.merge(
    items, 
    prices, 
    left_on='id', 
    right_on='id'
)

字段计算

字段计算是指运用对已知字段进行四则运算,获得所需新字段。

df = pd.read_csv(r"/Users/herenyi/Downloads/4/4.13/data.csv", sep="|",encoding = 'UTF-8');
df['result'] = df.price*df.num

结果如下:

df
Out[104]: 
   name  price  num   result
0     A   6058  408  2471664
1     B   1322  653   863266
2     C   7403  400  2961200
3     D   4911  487  2391657
4     E   3320   56   185920
5     F   3245  475  1541375
6     G   4881  746  3641226
7     H   8035  980  7874300
8     I   6772  316  2139952
9     J   4050  661  2677050
10    K   2673  783  2092959
11    L   2787  975  2717325
12    M   2839  221   627419
13    N    331  480   158880
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值