df合并问题

一、 merge

pd.merge(l_df, data_df, how="outer", on="date").sort_values(["date"], ascending=False)

sort_values: 对date字段排序,

ascending:正序(true)

* 注意: outer 存在将填充的数据放在最后的情况

(1)merge只能用于两张表的连接,若有多个,则需不断两两合并实现。
(2)两张表有相同内容的一列,根据这一列将两张表进行合并,合并表的列数等于两张数据表列数和减去连接键的数量。

df合并问题_第1张图片

参数 说明
how 默认为inner,可设为inner/outer/left/right
on 根据某个字段进行连接,必须存在于两个DateFrame中(若未同时存在,则需要分别使用left_on和right_on来设置)
left_on 左连接,以DataFrame1中用作连接键的列
right_on 右连接,以DataFrame2中用作连接键的列
left_index 将DataFrame1行索引用作连接键
right_index 将DataFrame2行索引用作连接键
sort 根据连接键对合并后的数据进行排列,默认为True
suffixes 对两个数据集中出现的重复列,新数据集中加上后缀_x,_y进行区别

二、join 

left2.join(right2,how='outer') #直接实现按索引合并
left1.join(right1,on='key')  #是merge里的outer联结

 无重复列名的两个表基于行索引进行拼接,直接使用df1.join(df2),合并后的行数与df1相同,合并后的列数为df1+df2之和。

三、concate

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

(1)objs:对象,一般为df或者series
(2)axis:拼接方向,默认为0,行拼接,若axis=1,则为列拼接
(3)join:默认为outer表示并集,inner表示交集
(4)ignore_index=True:重建索引
(5)keys:创建层次化索引

1.2 常用功能
(1)两张表列数一致,只是需要将行数简单拼接时:pd.concat([df1,df2]),

          效果与   df1.append(df2)相当。
(2)两张表行数一致,只需要列简单拼接时:pd.concate([df1,df2],axis=1),

         效果与pd.merge(df1,df2,left_index=True,right_index=True,how=‘outer’)相当
(3)两张表按行拼接,只想保留列索引相同的列,则how=‘inner’。
(4)两张表按列拼接,只想保留行索引相同的行,则how=‘inner’。

 

三、参考

  1. Pandas教程 | Merge数据合并图文详解 - 知乎 (zhihu.com)
  2. Pandas的Merge实现 - 简书 (jianshu.com)

你可能感兴趣的:(#,pandas系列,python,开发语言)