pandas 表合并:(concat、merge、join)

一、concat:沿轴合并

concat(objs, axis=0, join='outer', join_axes=None, ignore_index=False, keys=None, levels=None, names=None, verify_integrity=False, sort=None, copy=True)

参数介绍:
objs:需要连接的对象集合,一般是列表或字典;
axis:连接轴向(默认axis=0);
join:参数为‘outer’或‘inner’;
join_axes=[]:指定自定义的索引;
keys=[]:创建层次化索引;
ignore_index=True:重建索引

举例:

>>> s1 = pd.Series(['a', 'b'])
>>> s2 = pd.Series(['c', 'd'])
>>> pd.concat([s1, s2])
		0    a
		1    b
		0    c
		1    d
# 参数	ignore_index
>>> pd.concat([s1, s2], ignore_index=True)
	    0    a
	    1    b
	    2    c
	    3    d
# 参数 keys
>>> pd.concat([s1, s2], keys=['s1', 's2',])
    s1  0    a
        1    b
    s2  0    c
        1    d
# 参数 names
>>> pd.concat([s1, s2], keys=['s1', 's2'],names=['Series name', 'Row ID'])
    Series name  Row ID
    s1           0         a
                 1         b
    s2           0         c
                 1         d

‘outer’和‘inner’:可以理解为列名的 并集 和 交集 。
pandas 表合并:(concat、merge、join)_第1张图片
axis=1时,‘outer’和‘inner’可以理解为索引 index 的 并集 和 交集
pandas 表合并:(concat、merge、join)_第2张图片
二、merge:通过键拼接列

merge(left, right, how='inner', on=None, left_on=None, right_on=None, left_index=False, right_index=False, sort=False, suffixes=('_x', '_y'), copy=True, indicator=False, validate=None)

left和right:两个不同的DataFrame,右边有时候也可以为Series;
how : {‘left’, ‘right’, ‘outer’, ‘inner’}, default ‘inner’
on:指的是用于连接的列索引名称,必须存在于左右两个DataFrame中,如果没有指定且其他参数也没有指定,则以两个DataFrame列名交集作为连接键;
left_on:左侧DataFrame中用于连接键的列名;
right_on:右侧DataFrame中用于连接键的列名;
left_index:使用左侧DataFrame中的行索引作为连接键;
right_index:使用右侧DataFrame中的行索引作为连接键;

 >>> df1 = pd.DataFrame({'lkey': ['foo', 'bar', 'baz', 'foo'],
...                     'value': [1, 2, 3, 5]})
>>> df2 = pd.DataFrame({'rkey': ['foo', 'bar', 'baz', 'foo'],
...                     'value': [5, 6, 7, 8]})
>>> df1
    lkey value
0   foo      1
1   bar      2
2   baz      3
3   foo      5
>>> df2
    rkey value
0   foo      5
1   bar      6
2   baz      7
3   foo      8

# left_on和right_on
>>> df1.merge(df2, left_on='lkey', right_on='rkey')
	lkey  value_x rkey  value_y
0  foo        1  foo        5
1  foo        1  foo        8
2  foo        5  foo        5
3  foo        5  foo        8
4  bar        2  bar        6
5  baz        3  baz        7

三、join:主要用于索引上的合并
join是DataFrame的方法!!!(也是就说pd.join是不合法的,只能pd.DataFrame.join)

join(self, other, on=None, how='left', lsuffix='', rsuffix='', sort=False)

其他没啥好解释的,看个例子就明白了的

>>> df = pd.DataFrame({'key': ['K0', 'K1', 'K2', 'K3', 'K4', 'K5'], 'A': ['A0', 'A1', 'A2', 'A3', 'A4', 'A5']})
>>> df
	key   A
0  K0  A0
1  K1  A1
2  K2  A2
3  K3  A3
4  K4  A4
5  K5  A5

>>> other = pd.DataFrame({'key': ['K0', 'K1', 'K2'], 'B': ['B0', 'B1', 'B2']})
>>> other
	key   B
0  K0  B0
1  K1  B1
2  K2  B2

# 使用索引连接

>>> df.join(other, lsuffix='_caller', rsuffix='_other')
		key_caller   A 		key_other    	B
0         K0  			A0        K0   			B0
1         K1  			A1        K1   			B1
2         K2  			A2        K2   			B2
3         K3  			A3       NaN  			NaN
4         K4  			A4       NaN  			NaN
5         K5  			A5       NaN  			NaN

你可能感兴趣的:(python,pandas,表合并)