pandas-16 pd.merge()的用法

Posted wenqiangit

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了pandas-16 pd.merge()的用法相关的知识,希望对你有一定的参考价值。

pandas-16 pd.merge()的用法

使用过sql语言的话,一定对join,left join, right join等非常熟悉,在pandas中,merge的作用也非常类似。
如:pd.merge(df1, df2) 找到一个外键,然后将两条数据合并成一条。
直接上例子:

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

'''

以上是关于pandas-16 pd.merge()的用法的主要内容,如果未能解决你的问题,请参考以下文章

pd.concat() 和 pd.merge() 之间的区别以及为啥我会得到错误的输出?

使用 pd.merge() 合并两个以上的数据帧

pd.merge :尝试合并具有相同列名的数据框

pd.concat()与pd.merge()之间的区别,为什么我得到错误的输出?

python详解pandas库的pd.merge函数

Python pd.merge函数通过索引横向合并csv文件