merge
通过pandas或DataFrame的merge方法,可以进行两个DataFrame的连接,这种连接类似于SQL中对两张表进行的join连接。
- how:指定连接方式。可以是inner, outer, left, right,默认为inner。
- on 指定连接使用的列(该列必须同时出现在两个DataFrame中),默认使用两个DataFrame中的所有同名列进行连接。
- left_on / right_on:指定左右DataFrame中连接所使用的列。
- left_index / right_index:是否将左边(右边)DataFrame中的索引作为连接列,默认为False。
- suffixes:当两个DataFrame列名相同时,指定每个列名的后缀(用来区分),默认为_x与_y。
import pandas as pd
import numpy as np
df1 = pd.DataFrame([[1, 2, 3], [3, 4, 5], [5, 6, 7],[7,8,9]], columns=['a', 'b', 'c'])
df2 = pd.DataFrame([[1, 2, 4], [10, 4, 6], [3, 8, 12],[5,5,5]], columns=['a', 'b', 'c'], index=[1,2,3,4])
df3 = pd.DataFrame([[1, 2, 4], [10, 4, 6], [3, 8, 12],[5,5,5]], columns=['d', 'e', 'f'], index=[1,2,3,4])
display(df1, df2, df3)
# 根据所有同名字段(标签名)进行等值连接。
# print(df1.merge(df2, how='left',on='a'))
pd.merge(df1,df2,how='left',on='a')
# 当列名不一样的时候,可以使用索引拼接数据
pd.merge(df1,df3,how='left',left_index=True, right_index=True)
concat
我们可以通过DataFrame或Series类型的concat方法,来进行连接操作,连接时,会根据索引进行对齐。
- axis:指定连接轴,默认为0。
- join:指定连接方式,默认为外连接。只有【outer:并集,inner:交集】
- keys:可以用来区分不同的数据组。
- join_axes:指定连接结果集中保留的索引。
- ignore_index:忽略原来连接的索引,创建新的整数序列索引,默认为False。
# 在进行concat拼接(堆叠),时,会根据索引进行对齐。如果无法对齐,会产生空值。(NaN)
pd.concat((df1, df3),join='outer', axis=1)
# 相同的列名,按竖直方向堆叠
pd.concat((df1, df2),join='outer', axis=0, ignore_index=True)
网友评论