级联操作
对原始数据(表格)进行横向或者纵向的拼接,和np.concatenate函数类似。需要保证拼接的行列索引的一致;如果不一致,会补空(外级联)或者 只级联能够级联的部分(内级联)
import numpy as np
import pandas as pd
from pandas import DataFrame
pd.concat((df1,df2),axis=0) #按列进行级联
-
匹配级联和不匹配级联(内、外)
横向级联——两个表格的行索引相同,匹配级联
纵向级联——外级联:列索引不同,不匹配级联,此时会产生空值
此时增加一个参数——内级联,只联接能够联接的列
如果要保证数据的完整性,必须使用out外级联。
df1.append(df2) #只能进行外级联
列和列的级联
合并操作
对数据的整合,一次只能合并两张表的数据
-
一对一合并
两张表的列索引不同;可以进行级联。对其合并——可以将数据合并
on='employee' : 基于employee这一列将两张表合并,如果没有这个参数,则基于相同的列进行合并。
-
一对多的合并
基于相同的列employee进行合并,得到了一个三行四列的表格:Jack的Engineering可以分别和Guido、Steve合并。
-
多对多的合并
(1) 基于group进行合并, 理论上得到一个6行3列的表格(有空缺值:outer)。到那时merge函数默认为 .merge(df1,df2,how='inner'):
(2)只保留左表或者保留右表进行合并:
(3)如果有两列的列索引相同,不指明基于哪一列合并时,则基于两者同时合并:
基于employee和group同时合并得到:
指定基于group列进行合并:
(4)两张表中没有相同的列索引时(有相同的数据)
没有共有的列如何合并? 但是只要有共有的数据即可合并
(5)内合并和外合并
out取并集(外合并,有空缺值),inner取交集(外合并,没有空缺值),merge默认inner。
如何判断是做级联还是合并:
- 看题目要求;
- 没有要求时,如果这张表的大部分索引都一样,那么肯定是做级联;
- 如果只有局部索引一样,甚至没有索引一样,那么只能做合并。
(下一节:人口分析案例,级联和合并的应用)