专栏首页数据科学与人工智能数据合并:pandas的concat()方法

数据合并:pandas的concat()方法

以下文章来源于数据思践 ,作者王路情

这是我的第53篇原创文章,关于PDFMV框架。

阅读完本,你可以知道:

1 数据合并是什么

2 pandas的concat()方法使用

1

数据合并

数据合并是PDFMV框架中Data环节的重要操作之一。当我们为要解决的业务问题需要整合各方数据时,意味着需要进行数据合并处理了。数据合并的可以纵向合并,也可以横向合并,前者是按列拓展,生成长数据;后者是按行延伸,生成宽数据,也就是我们常说的宽表。

2

pandas的concat()方法

pandas库提供了concat()方法来完成数据的合并。

1.1 数据合并—纵向拓展

举例:

import numpy as np
import pandas as pd

# 定义数据(字典数据结构)
data1 = {'Name':['Jai', 'Princi', 'Gaurav', 'Anuj'], 
        'Age':[27, 24, 22, 32], 
        'Address':['Nagpur', 'Kanpur', 'Allahabad', 'Kannuaj'], 
        'Qualification':['Msc', 'MA', 'MCA', 'Phd']} 
data2 = {'Name':['Abhi', 'Ayushi', 'Dhiraj', 'Hitesh'], 
        'Age':[17, 14, 12, 52], 
        'Address':['Nagpur', 'Kanpur', 'Allahabad', 'Kannuaj'], 
        'Qualification':['Btech', 'B.A', 'Bcom', 'B.hons']} 
# 生成数据框
df = pd.DataFrame(data1,index=[0, 1, 2, 3])
df1 = pd.DataFrame(data2, index=[4, 5, 6, 7])
print(df, "\n\n", df1)

# 数据合并(合并两个数据框)
frames = [df, df1]
res1 = pd.concat(frames)
print(res1)

结果:

把创建的两个数据框按着纵向拓展生成了一个新的数据框。concat()方法,默认是纵向拓展。

1.2 数据合并—横向延伸

通过设置concat()方法如下参数:

  • axis=1,表示横向延伸
  • join="inner"或者"outer",表示内连接或者外连接,默认是外连接
  • join_axes,设置为某个数据框的索引,表示按着指定索引进行数据横向合并

例子1:

import pandas as pd

data1 = {'Name':['Jai', 'Princi', 'Gaurav', 'Anuj'], 
        'Age':[27, 24, 22, 32], 
        'Address':['Nagpur', 'Kanpur', 'Allahabad', 'Kannuaj'], 
        'Qualification':['Msc', 'MA', 'MCA', 'Phd'],
        'Mobile No': [97, 91, 58, 76]} 

data2 = {'Name':['Gaurav', 'Anuj', 'Dhiraj', 'Hitesh'], 
        'Age':[22, 32, 12, 52], 
        'Address':['Allahabad', 'Kannuaj', 'Allahabad', 'Kannuaj'], 
        'Qualification':['MCA', 'Phd', 'Bcom', 'B.hons'],
        'Salary':[1000, 2000, 3000, 4000]} 

# 把字典数据结构生成pandas的数据框类型
df = pd.DataFrame(data1,index=[0, 1, 2, 3])
df1 = pd.DataFrame(data2, index=[2, 3, 6, 7]) 

# 输出数据框结果
print(df, "\n\n", df1)

# 数据合并-横向延伸
# 横向拓展设置axis=1,内连接指定join='inner'或者外连接指定join='outer'(默认值)
res2 = pd.concat([df, df1], axis=1, join='inner')
res3 = pd.concat([df, df1], axis=1)
# 数据数据合并结果
print(res2, "\n\n", res3)

结果:

例子2

import pandas as pd

data1 = {'Name':['Jai', 'Princi', 'Gaurav', 'Anuj'], 
        'Age':[27, 24, 22, 32], 
        'Address':['Nagpur', 'Kanpur', 'Allahabad', 'Kannuaj'], 
        'Qualification':['Msc', 'MA', 'MCA', 'Phd'],
        'Mobile No': [97, 91, 58, 76]} 

data2 = {'Name':['Gaurav', 'Anuj', 'Dhiraj', 'Hitesh'], 
        'Age':[22, 32, 12, 52], 
        'Address':['Allahabad', 'Kannuaj', 'Allahabad', 'Kannuaj'], 
        'Qualification':['MCA', 'Phd', 'Bcom', 'B.hons'],
        'Salary':[1000, 2000, 3000, 4000]} 

# 把字典数据结构生成pandas的数据框类型
df = pd.DataFrame(data1,index=[0, 1, 2, 3])
df1 = pd.DataFrame(data2, index=[2, 3, 6, 7]) 

# 输出数据框结果
print(df, "\n\n", df1)

# 数据合并-横向延伸
# 横向拓展设置axis=1,指定索引设置join_axes
res4 = pd.concat([df, df1], axis=1, join_axes=[df.index])
res5 = pd.concat([df, df1], axis=1, join_axes=[df1.index])
# 数据数据合并结果
print(res4, "\n\n", res5)

结果:

关于concat()方法其它参数,可以查阅文档。该方法的参数集:

关于pandas的concat()方法,您有什么疑问或者想法请留言。

本文分享自微信公众号 - 数据科学与人工智能(DS_AI_shujuren)

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2020-02-04

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

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Python代码|Python做数据可视化的代码

    从代码中学习Python知识和Python与数据相关的知识,是一个有效的方法。例如:想了解Python做数据可视化的工作。我们可以从互联网找一些Python做数...

    陆勤_数据人网
  • 【数据科学】数据科学家的7种统计学使用场景

    原文请见:How do data scientists use statistics? http://datastories.quora.com/How-do-...

    陆勤_数据人网
  • 【数据挖掘】数据挖掘与预测分析术语

    分析型客户关系管理(Analytical CRM/aCRM): 用于支持决策,改善公司跟顾客的互动或提高互动的价值。针对有关顾客的知识,和如何与顾客有效接触的知...

    陆勤_数据人网
  • 对不起,给pandas配表情包太难了,pandas你该这么学,No.6

    梦想橡皮擦
  • 百度再战企业市场五月或发布IM办公产品 反制阿里和腾讯

    昨天阿里的一个喷嚏,就让很多人的朋友圈刷屏,可见BAT的头衔不是吹的,BAT公司任何的风吹草动都可以让整个IT业界感冒。当腾讯和阿里相继现身企业市场的时候,有很...

    人称T客
  • LeetCode攀登之旅(3)

    对遇到的特殊问题能够自己设计出算法实现(可以是智力游戏题目或者工作中的实际问题等)

    公众号guangcity
  • 【使用指南】用Docker编译和测试PaddlePaddle

    编写|PaddlePaddle 排版|wangp 1 需要的软硬件 为了开发PaddlePaddle,我们需要: A: 一台电脑,可以装的是 Linux, ...

    用户1386409
  • 访问和提取DataFrame中的元素

    访问元素和提取子集是数据框的基本操作,在pandas中,提供了多种方式。对于一个数据框而言,既有从0开始的整数下标索引,也有行列的标签索引

    生信修炼手册
  • Linux实现树莓派3B的国密SM9算法交叉编译——(一)环境部署、简单测试与eclipse工程项目测试

    这篇文章主要介绍了交叉编译的实现,包括环境部署,并简单测试交叉编译环境是否安装成功。 

    墨文
  • 原【友盟+】CMO秦雯宣布正式退休,HBO被曝泄露超1.5TB数据 | 大数据24小时

    Adobe计算机视觉专家王珏加盟Face++;有线电视网络媒体公司HBO泄露1.5TB数据;Facebook拟7.5亿美元在俄亥俄州建立数据中心……以下为您奉上...

    数据猿

扫码关注云+社区

领取腾讯云代金券