05.记录合并&字段合并&字段匹配1.记录合并2.字段合并3.字段匹配3.1 默认只保留连接上的部分3.2 使用左连接3.3 使用右连接3.4 保留左右表所有数据行

1.记录合并

将两个结构相同的数据框合并成一个数据框。 函数concat([dataFrame1, dataFrame2, ...])

屏幕快照 2018-07-02 19.55.54.png

import pandas
from pandas import read_csv
data1 = read_csv(
    '/users/bakufu/desktop/4.10/data1.csv',
    sep = '|'        
)

data2 = read_csv(
    '/users/bakufu/desktop/4.10/data2.csv',
    sep = '|'        
)

data3 = read_csv(
    '/users/bakufu/desktop/4.10/data3.csv',
    sep = '|'        
)

data = pandas.concat([data1, data2, data3])

屏幕快照 2018-07-02 21.47.59.png

2.字段合并

将同一个数据框中的不同列合并成新的列。 方法x = x1 + x2 + x3 + ...合并后的数据以序列的形式返回。 要求:所有序列长度一致,数据都是字符型。如果是数值型或逻辑型,需要进行转换。

屏幕快照 2018-07-02 20.19.44.png

from pandas import read_csv
df = read_csv(
    '/users/bakufu/desktop/4.11/data.csv',
    sep = ' ',
    names = ['band', 'area', 'num']      
)

#将数值型数据转换成字符型数据
df = df.astype(str)

#合并成新列
tel = df['band'] + df['area'] + df['num']

#将tel添加到df数据框的tel列
df['tel'] = tel

屏幕快照 2018-07-02 20.37.46.png

3.字段匹配

根据各表共有的关键字段,把各表所需的记录进行一一对应。 函数merge(x, y, left_on, right_on) 需要匹配的数据列,应使用用一种数据类型。 返回值:DataFrame

参数

注释

x

第一个数据框

y

第二个数据框

left_on

第一个数据框用于匹配的列

right_on

第二个数据框用于匹配的列

import pandas
items = pandas.read_csv(
    '/users/bakufu/desktop/4.12/data1.csv',
    sep = '|',
    names = ['id', 'comments', 'title']
)

prices = pandas.read_csv(
    '/users/bakufu/desktop/4.12/data2.csv',
    sep = '|',
    names = ['id', 'oldPrice', 'nowPrice']    
)

屏幕快照 2018-07-02 22.04.03.png

屏幕快照 2018-07-02 22.04.25.png

3.1 默认只保留连接上的部分

第10行已经消失

itemPrices = pandas.merge(
    items,
    prices,
    left_on = 'id',
    right_on = 'id'
)

屏幕快照 2018-07-02 22.02.37.png

3.2 使用左连接

即使与右边数据框匹配不上,也要保留左边内容,右边未匹配数据用空值代替

itemPrices = pandas.merge(
    items,
    prices,
    left_on = 'id',
    right_on = 'id',
    how = 'left'
)

屏幕快照 2018-07-02 21.38.15.png

3.3 使用右连接

即使与左边数据框匹配不上,也要保留右边内容,左边未匹配数据用空值代替

itemPrices = pandas.merge(
    items,
    prices,
    left_on = 'id',
    right_on = 'id',
    how = 'right'
)

屏幕快照 2018-07-02 21.38.49.png

3.4 保留左右表所有数据行

即使连接不上,也保留所有未连接的部分,使用空值填充

itemPrices = pandas.merge(
    items,
    prices,
    left_on = 'id',
    right_on = 'id',
    how = 'outer'
)

屏幕快照 2018-07-02 21.41.59.png

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏专注 Java 基础分享

虚拟机类加载机制

虚拟机把字节码文件从磁盘加载进内存的这个过程,我们可以粗糙的称之为「类加载」,因为「类加载」不仅仅是读取一段字节码文件那么简单,虚拟机还要进行必要的「验证」、「...

4707
来自专栏纯洁的微笑

jvm系列(一):java类的加载机制

1、什么是类的加载 类的加载指的是将类的.class文件中的二进制数据读入到内存中,将其放在运行时数据区的方法区内,然后在堆区创建一个 java.lang.Cl...

3986
来自专栏达摩兵的技术空间

数组双向绑定的简单分享

本文主要是摘录《vuejs权威指南》部分的相关解读,我们都知道vue对数据支持双向绑定,对数组也是支持的,但是其在官网有明确说明,对于数组通过 对象.语法来修改...

1302
来自专栏大闲人柴毛毛

Linux Shell(一)——Shell变量

1 变量的分类 在Linux中,变量分为环境变量 和 局部变量。 环境变量能被子进程继承,而局部变量只能在当前进程中使用。 并且,不论是环境变量还是局...

3727
来自专栏程序员互动联盟

【面试宝典】c调用c++函数,为什么要加extern c

首先,作为extern是C/C++语言中表明函数和全局变量作用范围(可见性)的关键字,该关键字告诉编译器,其声明的函数和变量可以在本模块或其它模块中使用。 通常...

38814
来自专栏程序员的知识天地

Python新手快速入门教程-基础语法

交互式编程不需要创建脚本文件,是通过 Python 解释器的交互模式进来编写代码。

901
来自专栏软件开发 -- 分享 互助 成长

谈谈 char *num="123";和char num[4]="123";的区别

最近写程序的时候发现这样一个问题 #include<iostream> #include <string.h> using namespace std; vo...

2048
来自专栏web前端

select 遇到的坑

一、select遇到的坑      1、select赋默认值--多选和单选           1.1     单选:$('#id').val( value )...

25910
来自专栏移动端开发

iOS 开发之Block

iOS 开发之Block 一:什么是Block。Block的作用      UI开发和网络常见功能的实现回调,按钮事件的处理方法是回调方法。     1.   ...

20810
来自专栏前端杂货铺

内置对象,原生对象和宿主对象

js内置对象是ECMAScript规范中要求实现的一些函数和对象,具体包括Object,Function,Number,Boolean,Array, Strin...

2955

扫码关注云+社区

领取腾讯云代金券