iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > Python >pandas.concat方法怎么在Python3中使用
  • 558
分享到

pandas.concat方法怎么在Python3中使用

2023-06-07 14:06:26 558人浏览 薄情痞子

Python 官方文档:入门教程 => 点击学习

摘要

pandas.concat方法怎么在python3中使用?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。python可以做什么Python是一种编程语言,内置了许

pandas.concat方法怎么在python3中使用?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。

python可以做什么

Python是一种编程语言,内置了许多有效的工具,Python几乎无所不能,该语言通俗易懂、容易入门、功能强大,在许多领域中都有广泛的应用,例如最热门的大数据分析人工智能web开发等。

pandas.merge参数列表如下图,其中只有objs是必须得参数,另外常用参数包括objs、axis、join、keys、ignore_index。

pandas.concat方法怎么在Python3中使用

pd.concat([df1,df2,df3]), 默认axis=0,在0轴上合并。

pandas.concat方法怎么在Python3中使用

pd.concat([df1,df4],axis=1)–在1轴上合并

pandas.concat方法怎么在Python3中使用

pd.concat([df1,df2,df3],keys=[‘x', ‘y', ‘z'])–合并时便于区分建立层次化索引

pandas.concat方法怎么在Python3中使用

pd.concat([df1, df4], axis=1, join=‘inner')–采用内连接合并,join默认为outer外连接。

pandas.concat方法怎么在Python3中使用

pd.concat([df1, df4], ignore_index=True)–当原来DataFrame的索引没有意义的时候,concat之后可以不需要原来的索引。

pandas.concat方法怎么在Python3中使用

姊妹篇:pandas.merge用法详解!!!

补充:python3:pandas(合并concat和merge)

pandas处理多组数据的时候往往会要用到数据的合并处理,其中有三种方式,concat、append和merge。

1、concat

用concat是一种基本的合并方式。而且concat中有很多参数可以调整,合并成你想要的数据形式。axis来指明合并方向。axis=0是预设值,因此未设定任何参数时,函数默认axis=0。(0表示上下合并,1表示左右合并)

import pandas as pdimport numpy as np #定义资料集df1 = pd.DataFrame(np.ones((3,4))*0, columns=['a','b','c','d'])df2 = pd.DataFrame(np.ones((3,4))*1, columns=['a','b','c','d'])df3 = pd.DataFrame(np.ones((3,4))*2, columns=['a','b','c','d']) #concat纵向合并res = pd.concat([df1, df2, df3], axis=0) #打印结果print(res)''' a b c d0 0.0 0.0 0.0 0.01 0.0 0.0 0.0 0.02 0.0 0.0 0.0 0.00 1.0 1.0 1.0 1.01 1.0 1.0 1.0 1.02 1.0 1.0 1.0 1.00 2.0 2.0 2.0 2.01 2.0 2.0 2.0 2.02 2.0 2.0 2.0 2.0'''

上述index为0,1,2,0,1,2形式。为什么会出现这样的情况,其实是仍然按照合并前的index组合起来的。若希望递增,请看下面示例:

ignore_index (重置 index)

重置后的index为0,1,……8

res = pd.concat([df1, df2, df3], axis=0, ignore_index=True)# 将ignore_index设置为True print(res) #打印结果''' a b c d0 0.0 0.0 0.0 0.01 0.0 0.0 0.0 0.02 0.0 0.0 0.0 0.03 1.0 1.0 1.0 1.04 1.0 1.0 1.0 1.05 1.0 1.0 1.0 1.06 2.0 2.0 2.0 2.07 2.0 2.0 2.0 2.08 2.0 2.0 2.0 2.0'''

join (合并方式)

join='outer'为预设值,因此未设定任何参数时,函数默认join='outer'。此方式是依照column来做纵向合并,有相同的column上下合并在一起,其他独自的column个自成列,原本没有值的位置皆以NaN填充。

import pandas as pdimport numpy as np #定义资料集df1 = pd.DataFrame(np.ones((3,4))*0, columns=['a','b','c','d'], index=[1,2,3])df2 = pd.DataFrame(np.ones((3,4))*1, columns=['b','c','d','e'], index=[2,3,4]) res = pd.concat([df1, df2], axis=0, join='outer') #纵向"外"合并df1与df2 print(res)''' a b c d e 1 0.0 0.0 0.0 0.0 NaN 2 0.0 0.0 0.0 0.0 NaN 3 0.0 0.0 0.0 0.0 NaN 2 NaN 1.0 1.0 1.0 1.0 3 NaN 1.0 1.0 1.0 1.0 4 NaN 1.0 1.0 1.0 1.0'''res = pd.concat([df1, df2], axis=0, join='inner') #纵向"内"合并df1与df2 #打印结果print(res)''' b c d 1 0.0 0.0 0.0 2 0.0 0.0 0.0 3 0.0 0.0 0.0 2 1.0 1.0 1.0 3 1.0 1.0 1.0 4 1.0 1.0 1.0'''

join_axes (依照 axes 合并)

import pandas as pdimport numpy as np #定义资料集df1 = pd.DataFrame(np.ones((3,4))*0, columns=['a','b','c','d'], index=[1,2,3])df2 = pd.DataFrame(np.ones((3,4))*1, columns=['b','c','d','e'], index=[2,3,4]) #依照`df1.index`进行横向合并res = pd.concat([df1, df2], axis=1, join_axes=[df1.index]) #打印结果print(res)# a b c d b c d e# 1 0.0 0.0 0.0 0.0 NaN NaN NaN NaN# 2 0.0 0.0 0.0 0.0 1.0 1.0 1.0 1.0# 3 0.0 0.0 0.0 0.0 1.0 1.0 1.0 1.0

上述脚本中,join_axes=[df1.index]表明按照df1的index来合并,可以看到结果中去掉了df2中出现但df1中没有的index=4这一行。

2、append (添加数据)

append只有纵向合并,没有横向合并。

import pandas as pdimport numpy as np #定义资料集df1 = pd.DataFrame(np.ones((3,4))*0, columns=['a','b','c','d'])df2 = pd.DataFrame(np.ones((3,4))*1, columns=['a','b','c','d'])df3 = pd.DataFrame(np.ones((3,4))*1, columns=['a','b','c','d'])s1 = pd.Series([1,2,3,4], index=['a','b','c','d']) #将df2合并到df1的下面,以及重置index,并打印出结果res = df1.append(df2, ignore_index=True)print(res)# a b c d# 0 0.0 0.0 0.0 0.0# 1 0.0 0.0 0.0 0.0# 2 0.0 0.0 0.0 0.0# 3 1.0 1.0 1.0 1.0# 4 1.0 1.0 1.0 1.0# 5 1.0 1.0 1.0 1.0 #合并多个df,将df2与df3合并至df1的下面,以及重置index,并打印出结果res = df1.append([df2, df3], ignore_index=True)print(res)# a b c d# 0 0.0 0.0 0.0 0.0# 1 0.0 0.0 0.0 0.0# 2 0.0 0.0 0.0 0.0# 3 1.0 1.0 1.0 1.0# 4 1.0 1.0 1.0 1.0# 5 1.0 1.0 1.0 1.0# 6 1.0 1.0 1.0 1.0# 7 1.0 1.0 1.0 1.0# 8 1.0 1.0 1.0 1.0 #合并series,将s1合并至df1,以及重置index,并打印出结果res = df1.append(s1, ignore_index=True)print(res)# a b c d# 0 0.0 0.0 0.0 0.0# 1 0.0 0.0 0.0 0.0# 2 0.0 0.0 0.0 0.0# 3 1.0 2.0 3.0 4.0

3、merge

根据两组数据中的关键字key来合并(key在两组数据中是完全一致的)。

3.1依据一组key合并

import pandas as pd #定义资料集并打印出left = pd.DataFrame({'key': ['K0', 'K1', 'K2', 'K3'],    'A': ['A0', 'A1', 'A2', 'A3'],    'B': ['B0', 'B1', 'B2', 'B3']})right = pd.DataFrame({'key': ['K0', 'K1', 'K2', 'K3'],    'C': ['C0', 'C1', 'C2', 'C3'],    'D': ['D0', 'D1', 'D2', 'D3']})print(left)# A B key# 0 A0 B0 K0# 1 A1 B1 K1# 2 A2 B2 K2# 3 A3 B3 K3 print(right)# C D key# 0 C0 D0 K0# 1 C1 D1 K1# 2 C2 D2 K2# 3 C3 D3 K3 #依据key column合并,并打印出res = pd.merge(left, right, on='key') print(res) A B key C D# 0 A0 B0 K0 C0 D0# 1 A1 B1 K1 C1 D1# 2 A2 B2 K2 C2 D2# 3 A3 B3 K3 C3 D3

3.2 根据两组key合并

合并时有4种方法how = ['left', 'right', 'outer', 'inner'],预设值how='inner'。

inner:按照关键字组合之后,去掉组合中有合并项为NaN的行。

outer :保留所有组合

left:仅保留左边合并项为NaN的行

right:仅保留右边合并项为NaN的行

import pandas as pdimport numpy as np #定义资料集并打印出left = pd.DataFrame({'key1': ['K0', 'K0', 'K1', 'K2'],   'key2': ['K0', 'K1', 'K0', 'K1'],   'A': ['A0', 'A1', 'A2', 'A3'],   'B': ['B0', 'B1', 'B2', 'B3']})right = pd.DataFrame({'key1': ['K0', 'K1', 'K1', 'K2'],   'key2': ['K0', 'K0', 'K0', 'K0'],   'C': ['C0', 'C1', 'C2', 'C3'],   'D': ['D0', 'D1', 'D2', 'D3']}) print(left)''' key1 key2 A B0 K0 K0 A0 B01 K0 K1 A1 B12 K1 K0 A2 B23 K2 K1 A3 B3'''print(right)''' key1 key2 C D0 K0 K0 C0 D01 K1 K0 C1 D12 K1 K0 C2 D23 K2 K0 C3 D3''' #依据key1与key2 columns进行合并,并打印出四种结果['left', 'right', 'outer', 'inner']res = pd.merge(left, right, on=['key1', 'key2'], how='inner')print(res)''' key1 key2 A B C D0 K0 K0 A0 B0 C0 D01 K1 K0 A2 B2 C1 D12 K1 K0 A2 B2 C2 D2'''res = pd.merge(left, right, on=['key1', 'key2'], how='outer')print(res)''' key1 key2 A B C D0 K0 K0 A0 B0 C0 D01 K0 K1 A1 B1 NaN NaN2 K1 K0 A2 B2 C1 D13 K1 K0 A2 B2 C2 D24 K2 K1 A3 B3 NaN NaN5 K2 K0 NaN NaN C3 D3'''res = pd.merge(left, right, on=['key1', 'key2'], how='left')print(res) ''' key1 key2 A B C D0 K0 K0 A0 B0 C0 D01 K0 K1 A1 B1 NaN NaN2 K1 K0 A2 B2 C1 D13 K1 K0 A2 B2 C2 D24 K2 K1 A3 B3 NaN NaN'''res = pd.merge(left, right, on=['key1', 'key2'], how='right')print(res) ''' key1 key2 A B C D0 K0 K0 A0 B0 C0 D01 K1 K0 A2 B2 C1 D12 K1 K0 A2 B2 C2 D23 K2 K0 NaN NaN C3 D3'''

3.3 Indicator

indicator=True会将合并的记录放在新的一列。

import pandas as pd #定义资料集并打印出df1 = pd.DataFrame({'col1':[0,1], 'col_left':['a','b']})df2 = pd.DataFrame({'col1':[1,2,2],'col_right':[2,2,2]}) print(df1)# col1 col_left# 0 0 a# 1 1 b print(df2)# col1 col_right# 0 1  2# 1 2  2# 2 2  2 # 依据col1进行合并,并启用indicator=True,最后打印出res = pd.merge(df1, df2, on='col1', how='outer', indicator=True)print(res)# col1 col_left col_right _merge# 0 0.0 a NaN left_only# 1 1.0 b 2.0 both# 2 2.0 NaN 2.0 right_only# 3 2.0 NaN 2.0 right_only # 自定indicator column的名称,并打印出res = pd.merge(df1, df2, on='col1', how='outer', indicator='indicator_column')print(res)# col1 col_left col_right indicator_column# 0 0.0 a NaN left_only# 1 1.0 b 2.0  both# 2 2.0 NaN 2.0 right_only# 3 2.0 NaN 2.0 right_only

3.4 依据index合并

import pandas as pd #定义资料集并打印出left = pd.DataFrame({'A': ['A0', 'A1', 'A2'],   'B': ['B0', 'B1', 'B2']},   index=['K0', 'K1', 'K2'])right = pd.DataFrame({'C': ['C0', 'C2', 'C3'],   'D': ['D0', 'D2', 'D3']},   index=['K0', 'K2', 'K3']) print(left)# A B# K0 A0 B0# K1 A1 B1# K2 A2 B2 print(right)# C D# K0 C0 D0# K2 C2 D2# K3 C3 D3 #依据左右资料集的index进行合并,how='outer',并打印出res = pd.merge(left, right, left_index=True, right_index=True, how='outer')print(res)# A B C D# K0 A0 B0 C0 D0# K1 A1 B1 NaN NaN# K2 A2 B2 C2 D2# K3 NaN NaN C3 D3 #依据左右资料集的index进行合并,how='inner',并打印出res = pd.merge(left, right, left_index=True, right_index=True, how='inner')print(res)# A B C D# K0 A0 B0 C0 D0# K2 A2 B2 C2 D2

3.5 解决overlapping的问题

下面脚本中,boys和girls均有属性age,但是两者值不同,因此需要在合并时加上后缀suffixes,以示区分。

import pandas as pd #定义资料集boys = pd.DataFrame({'k': ['K0', 'K1', 'K2'], 'age': [1, 2, 3]})girls = pd.DataFrame({'k': ['K0', 'K0', 'K3'], 'age': [4, 5, 6]}) #使用suffixes解决overlapping的问题res = pd.merge(boys, girls, on='k', suffixes=['_boy', '_girl'], how='inner')print(res)# age_boy k age_girl# 0 1 K0  4# 1 1 K0  5

看完上述内容是否对您有帮助呢?如果还想对相关知识有进一步的了解或阅读更多相关文章,请关注编程网Python频道,感谢您对编程网的支持。

--结束END--

本文标题: pandas.concat方法怎么在Python3中使用

本文链接: https://www.lsjlt.com/news/249606.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • pandas.concat方法怎么在Python3中使用
    pandas.concat方法怎么在Python3中使用?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。python可以做什么Python是一种编程语言,内置了许...
    99+
    2023-06-07
  • 怎么使用Pandas.concat连接DataFrame和Series
    这篇文章主要介绍了怎么使用Pandas.concat连接DataFrame和Series的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇怎么使用Pandas.concat连接DataFrame和Series文章都...
    99+
    2023-07-05
  • 怎么在python3协程中使用asyncio
    怎么在python3协程中使用asyncio?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。Python主要用来做什么Python主要应用于:1、Web开发;2、...
    99+
    2023-06-14
  • 在Python3中使用ssh
      在python3中使用密钥文件方式的ssh。#encoding: utf-8 #author: walker #date: 2017-03-29 #summary: 在python代码中使用ssh #Python sys.version...
    99+
    2023-01-31
    ssh
  • 怎么在ubuntu中使用Pip安装Python3
    今天就跟大家聊聊有关怎么在ubuntu中使用Pip安装Python3,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。正文1)下载ubuntu镜像docker pull&nbs...
    99+
    2023-06-06
  • Python3中的re.findall()及re.compile()方法怎么用
    这篇文章主要讲解了“Python3中的re.findall()及re.compile()方法怎么用”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Python3中的re.findall()及r...
    99+
    2023-06-30
  • Python3的re.search方法怎么用
    本篇内容主要讲解“Python3的re.search方法怎么用”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Python3的re.search方法怎么用”吧!实例#!/usr/bin/pytho...
    99+
    2023-06-08
  • Arrays.toString()方法怎么在java中使用
    Arrays.toString()方法怎么在java中使用?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。在实际项目中,如果想要把数组中的内容打印出来,直接使用toStrin...
    99+
    2023-06-06
  • Exchanger方法怎么在Java中使用
    这期内容当中小编将会给大家带来有关Exchanger方法怎么在Java中使用,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。Exchanger的使用方法介绍exchange(V x):阻塞当前线程,直到另外...
    99+
    2023-06-14
  • np.delete()方法怎么在python中使用
    本篇文章为大家展示了np.delete()方法怎么在python中使用,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。python的五大特点是什么python的五大特点:1.简单易学,开发程序时,专注...
    99+
    2023-06-14
  • prop()方法怎么在JQuery中使用
    今天就跟大家聊聊有关prop()方法怎么在JQuery中使用,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。jquery是什么jquery是一个简洁而快速的JavaScript库,它具...
    99+
    2023-06-14
  • $.post()方法怎么在jQuery中使用
    $.post()方法怎么在jQuery中使用?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。jquery是什么jquery是一个简洁而快速的JavaScript库...
    99+
    2023-06-14
  • show()方法怎么在jQuery中使用
    今天就跟大家聊聊有关show()方法怎么在jQuery中使用,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。jquery是什么jquery是一个简洁而快速的JavaScript库,它具...
    99+
    2023-06-14
  • prepend()方法怎么在jquery中使用
    prepend()方法怎么在jquery中使用?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。jquery是什么jquery是一个简洁而快速的JavaScript库,它具有独...
    99+
    2023-06-14
  • zip_longest方法怎么在python中使用
    本篇文章给大家分享的是有关 zip_longest方法怎么在python中使用,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。python主要应用领域有哪些1、云计算,典型应用O...
    99+
    2023-06-14
  • html()方法怎么在jQuery中使用
    这期内容当中小编将会给大家带来有关html()方法怎么在jQuery中使用,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。jquery是什么jquery是一个简洁而快速的JavaScript库,它具有独特的...
    99+
    2023-06-14
  • 怎么在javascript中使用show方法
    怎么在javascript中使用show方法?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。javascript show方法用于显示已被隐藏的元素,其使用语法是“$(selec...
    99+
    2023-06-14
  • eq()方法怎么在jquery中使用
    本篇文章给大家分享的是有关eq()方法怎么在jquery中使用,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。jquery是什么jquery是一个简洁而快速的JavaScript...
    99+
    2023-06-14
  • join方法怎么在javascript中使用
    这篇文章将为大家详细讲解有关 join方法怎么在javascript中使用,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。JavaScript join() 方法定义和用法join() 方法用...
    99+
    2023-06-14
  • is()方法怎么在JQuery中使用
    is()方法怎么在JQuery中使用?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。jquery是什么jquery是一个简洁而快速的JavaScript库,它具有独特的链式语...
    99+
    2023-06-14
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作