pandas中merge的用法
阿新 • • 發佈:2018-11-10
使用過sql語言的話,一定對join,left join, right join等非常熟悉,在pandas中,merge的作用也非常類似。直接上例子:
import numpy as np
import pandas as pd
from pandas import Series, DataFrame
df1 = DataFrame({'key':['X', 'Y', 'Z'], 'data_set_1':[1, 2, 3]})
print(df1)
'''
data_set_1 key
0 1 X
1 2 Y
2 3 Z
'''
df2 = DataFrame({'key':['X', 'B', 'C'], 'data_set_2':[4, 5, 6]})
print(df2)
'''
data_set_2 key
0 4 A
1 5 B
2 6 C
'''
# 感覺這個就像 操作 sql 的感覺一樣
# 找到一個外來鍵 然後將兩條資料拿到手
print(pd.merge(df1, df2))
'''
data_set_1 key data_set_2
0 1 X 4
'''
# 第二個引數 on 代表 要在 哪一個 列上 進行 merge
# print(pd.merge(df1, df2, on='data_set_1')) # 報錯
# inner 拿出的是兩邊都有的值
print(pd.merge(df1, df2, on='key', how='inner'))
'''
data_set_1 key data_set_2
0 1 X 4
'''
# left 按照left的dataframe為基準,右邊值為空的話就預設nan
print(pd.merge(df1, df2, on='key', how='left'))
'''
data_set_1 key data_set_2
0 1 X 4.0
1 2 Y NaN
2 3 Z NaN
'''
# 同理 right 按照右邊為基準
print(pd.merge(df1, df2, on='key', how='right'))
'''
data_set_1 key data_set_2
0 1.0 X 4
1 NaN B 5
2 NaN C 6
'''
# outer 將 left right 的結合, 所有的key都拿出來,哪邊缺失,就補充nan
print(pd.merge(df1, df2, on='key', how='outer'))
'''
data_set_1 key data_set_2
0 1.0 X 4.0
1 2.0 Y NaN
2 3.0 Z NaN
3 NaN B 5.0
4 NaN C 6.0
'''