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

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

阅读完本,你可以知道:

1 数据合并是什么

2 pandas的concat()方法使用

1数据合并

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

7f315151320aa8aa35a34703f5f19792.png

2pandas的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()方法,默认是纵向拓展。

a9c5e15c3e1581d25fcd44b82ffbf796.png

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)

结果:

655e19292ef43e7d949f29da6e1ec831.png

例子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)

结果:

bb9e79fadbb97c9ea8ade73bbf2afec8.png

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

6df08a5400d80ee0bc76c4e94442ccd9.png

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

需要深入交流和沟通,请加我的微信:luqin360。备注:实名+工作或者专业,否则不会通过。

数据思考与践行

10052ededf7a3ebc553f28beef856aba.png

PDFMV框架系列文章

1一个数据人的2019

2PDFMV框架

a9a2d455d47f82c0e64ae9d66552a3fe.png你点的每个在看,我都认真当成了喜欢
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值