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

'''

原文地址:https://www.cnblogs.com/wenqiangit/p/11252806.html

时间: 2024-11-07 21:38:12

pandas-16 pd.merge()的用法的相关文章

python数据表的合并(python pandas join() 、merge()和concat()的用法)

merage# pandas提供了一个类似于关系数据库的连接(join)操作的方法<Strong>merage</Strong>,可以根据一个或多个键将不同DataFrame中的行连接起来,语法如下: merge(left, right, how='inner', on=None, left_on=None, right_on=None, left_index=False, right_index=False, sort=True, suffixes=('_x', '_y'), c

【python】详解pandas库的pd.merge函数

本篇详细说明merge的应用,join 和concatenate的拼接方法的与之相似. 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) 参数如下: left: 拼接的左侧Da

pandas-09 pd.groupby()的用法

pandas-09 pd.groupby()的用法 在pandas中的groupby和在sql语句中的groupby有异曲同工之妙,不过也难怪,毕竟关系数据库中的存放数据的结构也是一张大表罢了,与dataframe的形式相似. import numpy as np import pandas as pd from pandas import Series, DataFrame df = pd.read_csv('./city_weather.csv') print(df) ''' date ci

C++笔记16之const的用法总结

const主要是为了程序的健壮型,减少程序出错. 最基本的用法: [cpp] view plaincopy const int a=100; b的内容不变,b只能是100也就是声明一个int类型的常量(#define b =100) int const b=100; //和上面作用一样 const指针和引用一般用在函数的参数中 [cpp] view plaincopy int* m = &a; //出错,常量只能用常指针 int c= 1;const int*pc = &c;//常指针可指

SQL2008中Merge的用法

在SQL2008中,新增了一个关键字:Merge,这个和Oracle的Merge的用法差不多,只是新增了一个delete方法而已.下面就是具体的使用说明: 首先是对merge的使用说明: merge [into] [目标表]using <源表>on 条件when matched 操作 when not matched 操作; 首先,请参看两张表 TableThis和TableThat: 可以看到,这两张表中的内容还是比较简单的,两张表通过一个tbThisID进行主键和外键的关联,那么如如果想实

SQL2008中Merge的用法(轉載)

在SQL2008中,新增了一个关键字:Merge,这个和Oracle的Merge的用法差不多,只是新增了一个delete方法而已.下面就是具体的使用说明: 首先是对merge的使用说明: merge [into] [目标表]using <源表>on 条件when matched 操作 when not matched 操作; 首先,请参看两张表 TableThis和TableThat: 可以看到,这两张表中的内容还是比较简单的,两张表通过一个tbThisID进行主键和外键的关联,那么如如果想实

SQL2008中Merge的用法(转)

在SQL2008中,新增了一个关键字:Merge,这个和Oracle的Merge的用法差不多,只是新增了一个delete方法而已.下面就是具体的使用说明: 首先是对merge的使用说明: merge [into] [目标表]using <源表>on 条件when matched 操作 when not matched 操作; 可以看到,这两张表中的内容还是比较简单的,两张表通过一个tbThisID进行主键和外键的关联,那么如如果想实现二者之间的数据同步,该如何进行呢,请看具体的Merge代码:

pandas中pd.read_excel()方法中的converters参数

最近用pandas的pd.read_excel()方法读取excel文件时,遇到某一列的数据前面包含0(如010101)的时候,pd.read_excel()方法返回的DataFrame会将这一列视为int类型,即010101变成10101. 这种情况下,如果想要保持数据的完整性,可以以str类型来读取这一列,具体的实现如下: 1 df = pd.read_excel ("test.xlsx" , converters={'类别编码':str}) 如上代码,即可将"test.

Oracle中Merge into用法总结 (转载)

Oracle中Merge into用法总结 (出处:http://www.cnblogs.com/dongsheng/p/4384754.html) 起因: 前段时间,因为涉及到一张表的大数据操作,要同时进行增删改,我跟师傅想了很多优化办法,结果都不尽人意.刚开始用的就是原始算法,先更新现有记录,再插入满足要求的其他记录,最后再删除多余记录,但是少量数据还可以,10W条数据就不行了,前台的超时时间是60s,远远无法满足要求.之后又想办法将任务进行拆分,根据每条记录流水号尾字符不同进行拆分,用多个