约定:
import pandas as pd
轴向连接-Concat
在数据处理中,通常将原始数据分开几个部分进行处理而得到相似结构的Series或DataFrame对象,我们该如何进行纵向合并它们?这时我们可以选择用pd.concat()方式极易连接两个或两个以上的Series或DataFrame对象。如下是该函数的参数解读:
pd.concat(objs, axis=0, join=’outer’, join_axes=None, ignore_index=False, keys=None, levels=None, names=None, verify_integrity=False, copy=True)
参数说明:
objs:连接对象,多以列表、字典传入
axis:轴向,0代表纵向连接,1,代表横向连接
join:连接方式,共有’inner’,’left’,right’,’outer’
join_axes:参与连接的索引
ignore_index:是否忽略索引
keys:层次化索引
1 Series对象的连接
s1=pd.Series([1,2],index=list('ab'))
s2=pd.Series([3,4,5],index=list('bde'))
pd.concat([s1,s2])
代码结果:
a 1
b 2
b 3
d 4
e 5
dtype: int64
2 纵向连接
pd.concat([s1,s2],axis=1)
代码结果:
0 | 1 | |
---|---|---|
a | 1.0 | NaN |
b | 2.0 | 3.0 |
d | NaN | 4.0 |
e | NaN | 5.0 |
3 用内连接求交集
pd.concat([s1,s2],axis=1,join='inner')
代码结果:
0 | 1 | |
---|---|---|
b | 2 | 3 |
4 指定部分索引进行连接
pd.concat([s1,s2],axis=1,join_axes=[list('abc')])
代码结果:
0 | 1 | |
---|---|---|
a | 1.0 | NaN |
b | 2.0 | 3.0 |
c | NaN | NaN |
5 创建层次化索引
pd.concat([s1,s2],keys=['A','B'])
代码结果:
A a 1
b 2
B b 3
d 4
e 5
dtype: int64
6 当纵向连接时keys为列名
pd.concat([s1,s2],keys=['A','B'],axis=1)
代码结果:
A | B | |
---|---|---|
a | 1.0 | NaN |
b | 2.0 | 3.0 |
d | NaN | 4.0 |
e | NaN | 5.0 |
7 DataFrame对象的连接
- 创建DataFrame对象
df3=pd.DataFrame({'Red':[1,3,5],'Green':[5,0,3]},index=list('abd'))
df3
代码结果:
Green | Red | |
---|---|---|
a | 5 | 1 |
b | 0 | 3 |
d | 3 | 5 |
df4=pd.DataFrame({'Blue':[1,9],'Yellow':[6,6]},index=list('ce'))
df4
代码结果:
Blue | Yellow | |
---|---|---|
c | 1 | 6 |
e | 9 | 6 |
pd.concat([df3,df4],axis=1,keys=['A','B'])
A | B | |||
---|---|---|---|---|
Green | Red | Blue | Yellow | |
a | 5.0 | 1.0 | NaN | NaN |
b | 0.0 | 3.0 | NaN | NaN |
c | NaN | NaN | 1.0 | 6.0 |
d | 3.0 | 5.0 | NaN | NaN |
e | NaN | NaN | 9.0 | 6.0 |
8 用字典的方式连接同样可以创建层次化列索引
pd.concat({'A':df3,'B':df4},axis=1)
代码结果:
A | B | |||
---|---|---|---|---|
Green | Red | Blue | Yellow | |
a | 5.0 | 1.0 | NaN | NaN |
b | 0.0 | 3.0 | NaN | NaN |
c | NaN | NaN | 1.0 | 6.0 |
d | 3.0 | 5.0 | NaN | NaN |
e | NaN | NaN | 9.0 | 6.0 |
9 忽略索引
pd.concat([df3,df4],ignore_index=True)
Blue | Green | Red | Yellow | |
---|---|---|---|---|
0 | NaN | 5.0 | 1.0 | NaN |
1 | NaN | 0.0 | 3.0 | NaN |
2 | NaN | 3.0 | 5.0 | NaN |
3 | 1.0 | NaN | NaN | 6.0 |
4 | 9.0 | NaN | NaN | 6.0 |
谢谢大家的浏览,
希望我的努力能帮助到您,
共勉!