不会合并,只会补全
首先我们假设几个简单的dataframe用于演示这个函数
df1 = pd.DataFrame([[1,2,3,4], [6,7,8,9]], columns=['D', 'B', 'E', 'A'], index=[1,2])
df2 = pd.DataFrame([[10,20,30,40], [60,70,80,90], [600,700,800,900]], columns=['A', 'B', 'C', 'D'], index=[2,3,4])
我们先将df1和df2 打印出来
print(df1)
D B E A
1 1 2 3 4
2 6 7 8 9
print(df2)
A B C D
2 10 20 30 40
3 60 70 80 90
4 600 700 800 900
让我们对齐这两个数据帧,按列 () 对齐,并对列标签执行外部联接 ():axis=1 join=‘outer’
a1, a2 = df1.align(df2, join='outer', axis=1)
print(a1)
print(a2)
A B C D E
1 4 2 NaN 1 3
2 9 7 NaN 6 8
A B C D E
2 10 20 30 40 NaN
3 60 70 80 90 NaN
4 600 700 800 900 NaN
outer相当于并集
inner相当于交集
right是以右边为主
left以左边为主
我说的
axis=0是行补
axis=1是列补
不规定axis是行和列
慢慢领悟吧,我是会了
使用领域:
比如你独热编码后发现测试集里可能没有训练集的某种特征的类型,例如特征地点 可能训练集里有淅川,但是测试集没有,这样你测试集最后的列数一定比训练集少一行,这就不能训练了(独热编码的属性),此时我们就可以用align
展开:
不用align可以干嘛?
假如有df1和df2,可以通过下面的方法得出df2没有的列
a=list(set(list(df1.columns))-set(list(df2.columns)))
df2[a]=0
就搞定了
学习链接在这里:stackoverflow