concat( )连接类似于merge()合并,但它不需要指定连接键,只是做一个简单的拼接。
concat( )连接
默认情况下
concat是在axis=0上工作的,最终产生一个新的Series
In [29]: s1=pd.Series([0,1],index=['a','b'])
In [34]: s2=pd.Series([2,3,4],index=['a','b','c'])
In [35]: s1
Out[35]:
a 0
b 1
dtype: int64
In [36]: s2
Out[36]:
a 2
b 3
c 4
dtype: int64
In [37]: pd.concat([s1,s2])
Out[37]:
a 0
b 1
a 2
b 3
c 4
dtype: int64
axis参数
如果传入axis=1,就会产生一个DataFrame
In [38]: pd.concat([s1,s2],axis=1)
Out[38]:
0 1
a 0.0 2
b 1.0 3
c NaN 4
join参数
传入join=“inner”即可得到它们的交集
In [39]: pd.concat([s1,s2],axis=1,join="inner")
Out[39]:
0 1
a 0 2
b 1 3
join_axes参数
指定索引,若不存在与索引对应的字段,则以NaN显示
In [40]: pd.concat([s1,s2],axis=1,join_axes=[['a','c','d','e']])
Out[40]:
0 1
a 0.0 2.0
c NaN 4.0
d NaN NaN
e NaN NaN
keys参数
创建层次化索引
In [42]: pd.concat([s1,s2],keys=['one','two'])
Out[42]:
one a 0
b 1
two a 2
b 3
c 4
dtype: int64
如果沿着axis=1对Series进行合并,则keys会成为DataFrame的列头
In [43]: pd.concat([s1,s2],keys=['one','two'],axis=1)
Out[43]:
one two
a 0.0 2
b 1.0 3
c NaN 4
如果传入的是一个字典而不是列表,则字典的键就会被当成是keys选项的值
In [44]: pd.concat({'A':s1,'B':s2},axis=1)
Out[44]:
A B
a 0.0 2
b 1.0 3
c NaN 4
ignore_index参数
忽略跟当前工作无关的行索引,产生一组新索引
In [51]: pd.concat([s1,s2])
Out[51]:
a 0
b 1
a 2
b 3
c 4
dtype: int64
In [52]: pd.concat([s1,s2],ignore_index=True)
Out[52]:
0 0
1 1
2 2
3 3
4 4
dtype: int64
concat函数的参数
参数 | 说明 |
---|---|
objs | 参与连接的pandas对象的列表或字典。唯一必须的参数 |
axis | 指明连接的轴向,默认为0 |
join | 指明索引是按交集(inner)还是并集(outer)进行合并。默认为outer |
join_axes | 指明用于其他n-1条轴的索引,不执行并集,交集的操作 |
keys | 与连接对象有关的值,用于形成连接轴上的层次化索引 |
ignore_index | 不保留连接轴上的索引,产生一组新索引 |
转载地址:
《利用Python进行数据分析》