pandas数据拼接的实现示例


Posted in Python onApril 16, 2020

一 前言

pandas数据拼接有可能会用到,比如出现重复数据,需要合并两份数据的交集,并集就是个不错的选择,知识追寻者本着技多不压身的态度蛮学习了一下下;

二 数据拼接

在进行学习数据转换之前,先学习一些数拼接相关的知识

2.1 join()联结

有关merge操作知识追寻者这边不提及,有空可能后面会专门出一篇相关文章,因为其学习方式根SQL的表联结类似,不是几行能说清楚的知识点;

join操作能将 2 个DataFrame 合并为一块,前提是DataFrame 之间的列没有重复;

# -*- coding: utf-8 -*-

import pandas as pd
import numpy as np

data1 = {
  'user' : ['zszxz','craler','rose'],
  'price' : [100, 200, 300],
  'hobby' : ['reading','running','hiking']
}
index1 = ['user1','user2','user3']
frame1 = pd.DataFrame(data1,index1)

data2 = {
  'person' : ['zszxz','craler','rose'],
  'number' : [100, 2000, 3000],
  'activity' : ['swing','riding','climbing']
}
index2 = ['user1','user2','user3']
frame2 = pd.DataFrame(data2,index2)

join = frame1.join(frame2)
print(join)

输出

         user  price    hobby  person  number  activity
user1   zszxz    100  reading   zszxz     100     swing
user2  craler    200  running  craler    2000    riding
user3    rose    300   hiking    rose    3000  climbing

2.2 concat()拼接

使用 concat() 函数能将2个 Series 拼接为一个,默认按行拼接;

ser1 = pd.Series(['111','222',np.NaN])
ser2 = pd.Series(['333','444',np.NaN])
# 默认按行拼接
print(pd.concat([ser1, ser2]))

如果按列拼接则 axis = 1

ser1 = pd.Series(['111','222',np.NaN])
ser2 = pd.Series(['333','444',np.NaN])
# 按列拼接
print(pd.concat([ser1, ser2],axis=1))

输出

     0    1
0  111  333
1  222  444
2  NaN  NaN

更近一步,指定key 参数 输出的数据格式就和 DataFrame 一样

ser1 = pd.Series(['111','222',np.NaN])
ser2 = pd.Series(['333','444',np.NaN])
# 按列拼接
data = pd.concat([ser1, ser2],axis=1, keys=['zszxz', 'rzxx'])
print(data)

输出

  zszxz rzxx
0   111  333
1   222  444
2   NaN  NaN

注 : DataFrame 的 concat 操作 和 Series 类似;

2.3 combine_first()组合

索引重复时就可以使用combine_first进行拼接

ser1 = pd.Series(['111','222',np.NaN],index=[1,2,3])
ser2 = pd.Series(['333','444',np.NaN,'555'],index=[1,2,3,4])
data = ser1.combine_first(ser2)
print(data)

输出

1    111
2    222
3    NaN
4    555
dtype: object

将Series 位置互换一下,可以看见基准将以 ser2为准;

ser1 = pd.Series(['111','222',np.NaN],index=[1,2,3])
ser2 = pd.Series(['333','444',np.NaN,'555'],index=[1,2,3,4])
data = ser2.combine_first(ser1)
print(data)

输出

1    333
2    444
3    NaN
4    555
dtype: object

2.4 轴转换

准备的数据

# -*- coding: utf-8 -*-

import pandas as pd
import numpy as np

data = {
  'user' : ['zszxz','craler','rose'],
  'price' : [100, 200, 300],
  'hobby' : ['reading','running','hiking']
}
index = ['user1','user2','user3']
frame = pd.DataFrame(data,index)
print(frame)

输出

         user  price    hobby
user1   zszxz    100  reading
user2  craler    200  running
user3    rose    300   hiking

stack() 将 列转为行;

# -*- coding: utf-8 -*-

import pandas as pd
import numpy as np

data = {
  'user' : ['zszxz','craler','rose'],
  'price' : [100, 200, 300],
  'hobby' : ['reading','running','hiking']
}
index = ['user1','user2','user3']
frame = pd.DataFrame(data,index)
print(frame.stack())

输出

user1  user       zszxz
       price        100
       hobby    reading
user2  user      craler
       price        200
       hobby    running
user3  user        rose
       price        300
       hobby     hiking
dtype: object

使用 unstack()将 数据结构重新返回

# -*- coding: utf-8 -*-

import pandas as pd
import numpy as np

data = {
  'user' : ['zszxz','craler','rose'],
  'price' : [100, 200, 300],
  'hobby' : ['reading','running','hiking']
}
index = ['user1','user2','user3']
frame = pd.DataFrame(data,index)
sta = frame.stack()
print(sta.unstack())

输出

         user price    hobby
user1   zszxz   100  reading
user2  craler   200  running
user3    rose   300   hiking

到此这篇关于pandas数据拼接的实现示例的文章就介绍到这了,更多相关pandas数据拼接内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木! 

Python 相关文章推荐
Python中os.path用法分析
Jan 15 Python
python用10行代码实现对黄色图片的检测功能
Aug 10 Python
python字符串过滤性能比较5种方法
Jun 22 Python
Python3实现带附件的定时发送邮件功能
Dec 22 Python
Python 找到列表中满足某些条件的元素方法
Jun 26 Python
python中将\\uxxxx转换为Unicode字符串的方法
Sep 06 Python
python 定时器,轮询定时器的实例
Feb 20 Python
python安装scipy的方法步骤
Jun 26 Python
使用 Python 清理收藏夹里已失效的网站
Dec 03 Python
Python Numpy,mask图像的生成详解
Feb 19 Python
Python如何实现自带HTTP文件传输服务
Jul 08 Python
PyCharm+PyQt5+QtDesigner配置详解
Aug 12 Python
python 生成任意形状的凸包图代码
Apr 16 #Python
Python telnet登陆功能实现代码
Apr 16 #Python
基于python 凸包问题的解决
Apr 16 #Python
python实现交并比IOU教程
Apr 16 #Python
python 弧度与角度互转实例
Apr 15 #Python
使用Python三角函数公式计算三角形的夹角案例
Apr 15 #Python
Python selenium自动化测试模型图解
Apr 15 #Python
You might like
PHP在Web开发领域的优势
2006/10/09 PHP
php中的三元运算符使用说明
2011/07/03 PHP
比较详细PHP生成静态页面教程
2012/01/10 PHP
php防止sql注入示例分析和几种常见攻击正则表达式
2014/01/12 PHP
深入理解PHP类的自动载入机制
2016/09/16 PHP
js 多浏览器分别判断代码
2010/04/01 Javascript
ie下jquery.getJSON的缓存问题的处理方法
2013/03/29 Javascript
document.forms用法示例介绍
2014/06/26 Javascript
利用Jquery队列实现根据输入数量显示的动画
2016/09/01 Javascript
jQuery+CSS3实现四种应用广泛的导航条制作实例详解
2016/09/17 Javascript
PHP+jquery+ajax实现分页
2016/12/09 Javascript
JS常用正则表达式超全集(密码强度校验,金额校验,IE版本,IPv4,IPv6校验)
2020/02/03 Javascript
WEB前端性能优化的7大手段详解
2020/02/04 Javascript
《javascript设计模式》学习笔记七:Javascript面向对象程序设计组合模式详解
2020/04/08 Javascript
解决Vue的文本编辑器 vue-quill-editor 小图标样式排布错乱问题
2020/08/03 Javascript
微信小程序连续签到7天积分获得功能的示例代码
2020/08/20 Javascript
关于angular引入ng-zorro的问题浅析
2020/09/09 Javascript
Python中的条件判断语句与循环语句用法小结
2016/03/21 Python
Python 使用Numpy对矩阵进行转置的方法
2019/01/28 Python
Python实现KNN(K-近邻)算法的示例代码
2019/03/05 Python
python 如何用urllib与服务端交互(发送和接收数据)
2021/03/04 Python
新西兰第一的行李箱网站:luggage.co.nz
2019/07/22 全球购物
英国家居用品和床上用品零售商:P&B Home
2020/01/16 全球购物
师范毕业生求职自荐信
2013/09/25 职场文书
国贸专业个人求职信分享
2013/12/04 职场文书
公司经理聘任书
2014/03/29 职场文书
银行求职信范文
2014/05/26 职场文书
乡镇精神文明建设汇报材料
2014/08/15 职场文书
党代会心得体会
2014/09/04 职场文书
2015商场元旦促销活动策划方案
2014/12/09 职场文书
2015年七年级班主任工作总结
2015/05/21 职场文书
干部培训简讯
2015/07/20 职场文书
预备党员表决心的话
2015/09/22 职场文书
小学生反邪教心得体会
2016/01/15 职场文书
《天使的翅膀》读后感3篇
2019/12/20 职场文书
Python MNIST手写体识别详解与试练
2021/11/07 Python