Pandas 查询
Pandas 连接查询-merge
在实际数据分析过程中,有时候需要把不同的工作表,按照某些公共的列,将多个工作表连接起来,组合成一份新工作表,类似于Excel的Vlooup函数,或数据库的连接关系。Pandas 也提供了连接关系函数merge(),其将两个DataFrame的行按照指定的列进行匹配合并,并返回一个新的DataFrame。合并的方式可以是交集、并集、左连接或右连接,具体由参数how决定。
语法结构:
pandas.merge(left, right, how='inner', on=None, left_on=None, right_on=None, left_index=False, right_index=False, sort=True, suffixes=('_x', '_y'), copy=True, indicator=False)
参数说明:
left:要合并的左侧DataFrame
right:要合并的右侧DataFrame
how:合并的方式,默认为'inner',表示取两个DataFrame的交集、
'outer'(并集)、'left'(左连接)和'right'(右连接)
on:用于合并的列名(键),如果左右两个DataFrame中具有相同的列名,则可以省略此参数
left_on和`right_on:左右两个DataFrame中用于合并的列名,如果左右两个DataFrame中的列名不同,则需要分别指定
left_index和right_index:是否使用索引作为合并的键
sort:是否按照合并的键对合并结果进行排序,默认为True
suffixes:用于区分重复列名的后缀,默认为('_x', '_y')
copy:是否复制数据,默认为True,即每次合并都会返回新的DataFrame
indicator:是否附加一个特殊的列来标识每行的来源
Pandas merge 示例说明
merge连接使用示例:
merge 连接没有指写on参数时,默认以两表的共公列做为关联自动匹配,如果指定on=“列名称” 则以on指定的列名进行两表关联查询。
Pandas 合并查询-concat
merge查询,是将左表和右边按着指定的key进行联系查询,显示的是横向连接查询。无法实现纵向连接,那在工作中如果两个表的数据列都相同,那怎样合并呢?类似Excel 追加数据。这时可以使用Pandas的concat函数来解决。
语法结构如下:
pandas.concat(objs, axis=0, join='outer', ignore_index=False)
参数定义说明:
objs:要合并的DataFrame对象列表或字典。这是concat函数最重要的参数,用于指定要合并的对象 eg:[df1, df2]
axis:指定合并的轴,默认为0,表示按行进行合并;当axis=1时,表示按列进行合并
join:指定合并的方式,默认为'outer',表示取并集;当join='inner'时,表示取交集
ignore_index:是否忽略原来的索引,默认为False。如果设置为True,合并后的结果将重新生成新的连续索引
merge与concat 比较:
①concat方法不需要指定连接的列,只需要指定拼接的轴即可
②merge方法支持多种连接方式,包括内连接、左连接、右连接和外连接等
③merge方法适用于基于指定列进行连接的场景
④concat方法适用于简单的数据拼接场景
总结:如果需要按照特定的列连接,且需要更复杂的合并操作,使用merge方法
如果仅需进行简单的数据拼接,使用concat方法
Pandas concat示例说明
concat合并使用示例: