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打开url并按指定块读取网页内容的方法
Apr 29 Python
通过Python爬虫代理IP快速增加博客阅读量
Dec 14 Python
关于Python如何避免循环导入问题详解
Sep 14 Python
一个Python最简单的接口自动化框架
Jan 02 Python
python图像处理模块Pillow的学习详解
Oct 09 Python
Python箱型图绘制与特征值获取过程解析
Oct 22 Python
使用Python和OpenCV检测图像中的物体并将物体裁剪下来
Oct 30 Python
Python xpath表达式如何实现数据处理
Jun 13 Python
解决Keras中循环使用K.ctc_decode内存不释放的问题
Jun 29 Python
python实现感知机模型的示例
Sep 30 Python
python可视化 matplotlib画图使用colorbar工具自定义颜色
Dec 07 Python
python通过函数名调用函数的几种方法总结
Jun 07 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
在任意字符集下正常显示网页的方法一
2007/04/01 PHP
PHP Undefined index报错的修复方法
2011/07/17 PHP
php4与php5的区别小结(配置异同)
2011/12/20 PHP
zf框架的zend_cache缓存使用方法(zend框架)
2014/03/14 PHP
php学习笔记之基础知识
2014/11/08 PHP
Ubuntu中启用php的mail()函数并解决发送邮件速度慢问题
2015/03/27 PHP
php计划任务之验证是否有多个进程调用同一个job的方法
2015/12/07 PHP
在模板页面的js使用办法
2010/04/01 Javascript
javascript 实现简单的table排序及table操作练习
2012/12/28 Javascript
javascript实现通过表格绘制颜色填充矩形的方法
2015/04/21 Javascript
基于jQuery实现动态数字展示效果
2015/08/12 Javascript
js 动态添加元素(div、li、img等)及设置属性的方法
2016/07/19 Javascript
JS实现物体带缓冲的间歇运动效果示例
2016/12/22 Javascript
jQuery点击弹出层弹出模态框点击模态框消失代码分享
2017/01/21 Javascript
angularJs提交文本框数据到后台的方法
2018/10/08 Javascript
微信小程序实现简易table表格
2020/06/19 Javascript
搭建一个Koa后端项目脚手架的方法步骤
2019/05/30 Javascript
jQuery Datatables 动态列+跨列合并实现代码
2020/01/30 jQuery
python使用suds调用webservice接口的方法
2019/01/03 Python
使用Python中的reduce()函数求积的实例
2019/06/28 Python
python3字符串操作总结
2019/07/24 Python
python实现美团订单推送到测试环境,提供便利操作示例
2019/08/09 Python
Python3将数据保存为txt文件的方法
2019/09/12 Python
Python要求O(n)复杂度求无序列表中第K的大元素实例
2020/04/02 Python
Python3 ffmpeg视频转换工具使用方法解析
2020/08/10 Python
Banana Republic英国官网:香蕉共和国,GAP集团旗下偏贵族风
2018/04/24 全球购物
给学校的建议书范文
2014/05/15 职场文书
放飞理想演讲稿
2014/09/09 职场文书
营销总监岗位职责
2014/09/16 职场文书
2014党委书记四风对照检查材料思想汇报
2014/09/21 职场文书
清明节随笔
2015/08/15 职场文书
2016年领导干部正风肃纪心得体会
2015/10/09 职场文书
详解JAVA中的OPTIONAL
2021/06/14 Java/Android
解析redis hash应用场景和常用命令
2021/08/04 Redis
python使用opencv对图像添加噪声(高斯/椒盐/泊松/斑点)
2022/04/06 Python
Python  lambda匿名函数和三元运算符
2022/04/19 Python