前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >数据合并:pandas的concat()方法

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

作者头像
陆勤_数据人网
发布2020-02-18 16:51:19
3.5K0
发布2020-02-18 16:51:19
举报
文章被收录于专栏:数据科学与人工智能

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

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

阅读完本,你可以知道:

1 数据合并是什么

2 pandas的concat()方法使用

1

数据合并

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

2

pandas的concat()方法

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

1.1 数据合并—纵向拓展

举例:

代码语言:javascript
复制
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:

代码语言:javascript
复制
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

代码语言:javascript
复制
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()方法,您有什么疑问或者想法请留言。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-02-04,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 数据科学与人工智能 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档