字段抽取
字段抽取是指根据已知的字段抽取你想要的其中一部分组成新的列,主要是靠slice()函数来实现,主要有start和stop两个参数,我们都知道开始位置从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