Pandas的Merge实现
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Pandas的Merge实现相关的知识,希望对你有一定的参考价值。
参考技术A Pandas的Merge,相当于Sql的Join,将不同的表按key关联到一个表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)
文档地址: https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.merge.html
以下关系要正确理解:
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的Merge实现的主要内容,如果未能解决你的问题,请参考以下文章
python数据分析(12)Pandas实现对Excel列表数据整合(merge纵向合并concat横向连接)
# yyds干货盘点 # 盘点一道使用pandas.merge()和pandas.join()函数实战应用题目