核心方法
import pandas as pd
pd.merge(dataframe1,dataframe2,left_index=True,right_index=True)
修改合并的方式,可以更改merge
函数中的一个属性how
:
left:只使用左框架中的键,类似于SQL左外部连接;保留密钥顺序。
right:只使用右框架中的键,类似于SQL右外部联接;保留密钥顺序。
outer:使用来自两个帧的键的并集,类似于SQL完全外部连接;按字典顺序对键排序。
inner:使用两个帧的键的交集,类似于SQL内部连接;保留左键的顺序。
cross:从两个帧创建笛卡尔积,保留左键的顺序。
案例
df1:
0 | 1 | |
---|---|---|
a | 5 | 5 |
b | 8 | 1 |
c | 3 | 0 |
df2:
0 | 1 | |
---|---|---|
a | 7 | 5 |
b | 3 | 3 |
d | 9 | 5 |
import pandas as pd
import numpy as np
df_1 = pd.DataFrame(index=['a', 'b', 'c'], data=np.random.randint(0, 10, (3, 2)))
df_2 = pd.DataFrame(index=['a', 'b', 'd'], data=np.random.randint(0, 10, (3, 2)))
merge_index_df = pd.merge(df_1, df_2, how='outer', left_index=True, right_index=True)
合并之后:
0_x | 1_x | 0_y | 1_y | |
---|---|---|---|---|
a | 5 | 5 | 7 | 5 |
b | 8 | 1 | 3 | 3 |
c | 3 | 0 | nan | nan |
d | nan | nan | 9 | 5 |
参考文章
pandas DOC:https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.merge.html