import numpy as np
import pandas as pd
pd.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,
validate=None)
merge方法的主要参数:
left/right:左/右位置的dataframe。
how:数据合并的方式。left:基于左dataframe列的数据合并;right:基于右dataframe列的数据合并;outer:基于列的数据外合并(取并集);inner:基于列的数据内合并(取交集);默认为'inner'。
on:用来合并的列名,这个参数需要保证两个dataframe有相同的列名。多个索引用["A", "B"]
left_on/right_on:左/右dataframe合并的列名,也可为索引,数组和列表。
left_index/right_index:是否以index作为数据合并的列名,True表示是。
sort:根据dataframe合并的keys排序,默认是。
suffixes:若有相同列且该列没有作为合并的列,可通过suffixes设置该列的后缀名,一般为元组和列表类型。
例子
df1 = pd.DataFrame(data=[{'name':'xiaoming','color':'blue',}, {'name':'leilei','color':'yellow',}])
df2 = pd.DataFrame(data=[{'tools':'ruler','color':'blue',}, {'tools':'pen','color':'yellow',}, {'tools':'pencil','color':'yellow',}, {'tools':'eraser','color':'blue',}])
df1 |
|
|
|
name |
color |
0 |
xiaoming |
blue |
1 |
leilei |
yellow |
df2 |
|
|
|
tools |
color |
0 |
ruler |
blue |
1 |
pen |
yellow |
2 |
pencil |
yellow |
3 |
eraser |
blue |
df3 = pd.merge(df2, df1, how="left", on="color")
df3 = pd.merge(df2, df2, how="left", on=["类别", "水果"]) # 多索引
df3 |
|
|
|
|
tools |
color |
name |
0 |
ruler |
blue |
xiaoming |
1 |
pen |
yellow |
leilei |
2 |
pencil |
yellow |
leilei |
3 |
eraser |
blue |
xiaoming |