1.记录合并
将两个结构相同的数据框合并成一个数据框。
函数concat([dataFrame1, dataFrame2, ...])
import pandas
from pandas import read_csv
data1 = read_csv(
'/users/bakufu/desktop/4.10/data1.csv',
sep = '|'
)
data2 = read_csv(
'/users/bakufu/desktop/4.10/data2.csv',
sep = '|'
)
data3 = read_csv(
'/users/bakufu/desktop/4.10/data3.csv',
sep = '|'
)
data = pandas.concat([data1, data2, data3])
屏幕快照 2018-07-02 21.47.59.png
2.字段合并
将同一个数据框中的不同列合并成新的列。
方法x = x1 + x2 + x3 + ...
合并后的数据以序列的形式返回。
要求:所有序列长度一致,数据都是字符型。如果是数值型或逻辑型,需要进行转换。
from pandas import read_csv
df = read_csv(
'/users/bakufu/desktop/4.11/data.csv',
sep = ' ',
names = ['band', 'area', 'num']
)
#将数值型数据转换成字符型数据
df = df.astype(str)
#合并成新列
tel = df['band'] + df['area'] + df['num']
#将tel添加到df数据框的tel列
df['tel'] = tel
屏幕快照 2018-07-02 20.37.46.png
3.字段匹配
根据各表共有的关键字段,把各表所需的记录进行一一对应。
函数merge(x, y, left_on, right_on)
需要匹配的数据列,应使用用一种数据类型。
返回值:DataFrame
参数 | 注释 |
---|---|
x | 第一个数据框 |
y | 第二个数据框 |
left_on | 第一个数据框用于匹配的列 |
right_on | 第二个数据框用于匹配的列 |
import pandas
items = pandas.read_csv(
'/users/bakufu/desktop/4.12/data1.csv',
sep = '|',
names = ['id', 'comments', 'title']
)
prices = pandas.read_csv(
'/users/bakufu/desktop/4.12/data2.csv',
sep = '|',
names = ['id', 'oldPrice', 'nowPrice']
)
屏幕快照 2018-07-02 22.04.03.png
屏幕快照 2018-07-02 22.04.25.png
3.1 默认只保留连接上的部分
第10行已经消失
itemPrices = pandas.merge(
items,
prices,
left_on = 'id',
right_on = 'id'
)
屏幕快照 2018-07-02 22.02.37.png
3.2 使用左连接
即使与右边数据框匹配不上,也要保留左边内容,右边未匹配数据用空值代替
itemPrices = pandas.merge(
items,
prices,
left_on = 'id',
right_on = 'id',
how = 'left'
)
屏幕快照 2018-07-02 21.38.15.png
3.3 使用右连接
即使与左边数据框匹配不上,也要保留右边内容,左边未匹配数据用空值代替
itemPrices = pandas.merge(
items,
prices,
left_on = 'id',
right_on = 'id',
how = 'right'
)
屏幕快照 2018-07-02 21.38.49.png
3.4 保留左右表所有数据行
即使连接不上,也保留所有未连接的部分,使用空值填充
itemPrices = pandas.merge(
items,
prices,
left_on = 'id',
right_on = 'id',
how = 'outer'
)
屏幕快照 2018-07-02 21.41.59.png
网友评论