05.记录合并&字段合并&字段匹配

2018-07-03  本文已影响0人  李慕玄

1.记录合并

将两个结构相同的数据框合并成一个数据框。
函数concat([dataFrame1, dataFrame2, ...])

屏幕快照 2018-07-02 19.55.54.png
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 + ...合并后的数据以序列的形式返回。
要求:所有序列长度一致,数据都是字符型。如果是数值型或逻辑型,需要进行转换。

屏幕快照 2018-07-02 20.19.44.png
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
上一篇下一篇

猜你喜欢

热点阅读