Pandas中Concat与Append的实现与区别小结

 更新时间:2023年11月22日 09:30:27   作者:阿松爱睡觉  
本文主要介绍了Pandas中Concat与Append的实现与区别小结,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

在Numpy中,我们介绍过可以用np.concatenatenp.stacknp.vstacknp.hstack实现合并功能。Pandas中有一个pd.concat()函数与concatenate语法类似,但是配置参数更多,功能也更强大。

主要参数:

pd.concat()可以简单地合并一维的SeriesDataFrame对象。

# Series合并
ser1 = pd.Series(['A', 'B', 'C'], index=[1, 2, 3])
ser2 = pd.Series(['D', 'E', 'F'], index=[4, 5, 6])
pd.concat([ser1,ser2])
Out:
 1 A 
 2 B 
 3 C 
 4 D 
 5 E 
 6 F 
 dtype: object
 
# DataFrame合并,将concat的axis参数设置为1即可横向合并
df1 = pd.DataFrame([["A1","B1"],["A2","B2"]],index=[1,2],columns=["A","B"])
df2 = pd.DataFrame([["A3","B3"],["A4","B4"]],index=[3,4],columns=["A","B"])
pd.concat([df1,df2])
Out:
    A  B
 1 A1 B1 
 2 A2 B2 
 3 A3 B3 
 4 A4 B4

合并时索引的处理

np.concatenate与pd.concat最主要的差异之一就是Pandas在合并时会保留索引,即使索引是重复的!

df3 = pd.DataFrame([["A1","B1"],["A2","B2"]],index=[1,2],columns=["A","B"])
df4 = pd.DataFrame([["A1","B1"],["A2","B2"]],index=[1,2],columns=["A","B"])
pd.concat([df3,df4])
Out:
    A  B
 1 A1 B1 
 2 A2 B2 
 1 A3 B3 
 2 A4 B4
  • 如果你想要检测pd.concat()合并的结果中是否出现了重复的索引,可以设置verify_integrity参数。将参数设置为True,合并时若有索引重复就会触发异常。
try: 
 pd.concat([df3, df4], verify_integrity=True) 
except ValueError as e: 
 print("ValueError:", e)
Out:
ValueError: Indexes have overlapping values: [0, 1]
  • 有时索引无关紧要,那么合并时就可以忽略它们,可以通过设置 ignore_index参数为True来实现。
pd.concat([df3,df4],ignore_index=True)
Out:
   A B 
0 A0 B0 
1 A1 B1 
2 A2 B2 
3 A3 B3
  • 另一种处理索引重复的方法是通过keys参数为数据源设置多级索引标签,这样结果数据就会带上多级索引。
pd.concat([df3, df4], keys=['x', 'y'])
Out:
     A B 
x 0 A0 B0 
  1 A1 B1 
y 0 A2 B2 
  1 A3 B3

join和join_axes参数

前面介绍的简单示例都有一个共同特点,那就是合并的DataFrame都是同样的列名。而在实际工作中,需要合并的数据往往带有不同的列名,而 pd.concat提供了一些参数来解决这类合并问题。

df5 = pd.DataFrame([["A1","B1","C1"],["A2","B2","C2"]],index=[1,2],columns=["A","B","C"])
df6 = pd.DataFrame([["B3","C3","D3"],["B4","C4","D4"]],index=[3,4],columns=["B","C","D"])
pd.concat([df5,df6])
Out:
    A  B  C  D
 1 A1  B1 C1 NaN
 2 A2  B2 C2 NaN
 3 NaN B3 C3 D3
 4 NaN B4 C4 D4

可以看到,结果中出现了缺失值,如果不想出现缺失值,可以使用join和join_axes参数。

pd.concat([df5,df6],join="inner") # 合并取交集
Out:
    B C 
 1 B1 C1 
 2 B2 C2 
 3 B3 C3 
 4 B4 C4
# join_axes的参数需为一个列表索引对象
pd.concat([df5,df6],join_axes=[pd.Index(["B","C"])])
Out:
    B C 
 1 B1 C1 
 2 B2 C2 
 3 B3 C3 
 4 B4 C4

append()方法

因为直接进行数组合并的需求非常普遍,所以SeriesDataFrame 对象都支持append方法,让你通过最少的代码实现合并功能。例如,df1.append(df2)效果与pd.concat([df1,df2])一样。

但是它和Python中的append不一样,每次使用Pandas中的append()都需要重新创建索引和数据缓存。

到此这篇关于Pandas中Concat与Append的实现的文章就介绍到这了,更多相关Pandas Concat与Append内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 图文详解Python中最神秘的一个魔法函数

    图文详解Python中最神秘的一个魔法函数

    Python进阶之路我觉得有两个东西一定要了解,一个是魔法函数,下面这篇文章主要给大家介绍了关于Python中最神秘的一个魔法函数的相关资料,文中通过实例代码介绍的非常详细,需要的朋友可以参考下
    2021-12-12
  • Python爬虫,获取,解析,存储详解

    Python爬虫,获取,解析,存储详解

    这篇文章主要介绍了Python爬虫获取、解析,获数据操作,其中代码描述非常详细,需要的朋友可以参考下,希望能够给你带来帮助
    2021-10-10
  • Python cookbook(数据结构与算法)从序列中移除重复项且保持元素间顺序不变的方法

    Python cookbook(数据结构与算法)从序列中移除重复项且保持元素间顺序不变的方法

    这篇文章主要介绍了Python cookbook(数据结构与算法)从序列中移除重复项且保持元素间顺序不变的方法,涉及Python针对列表与字典的元素遍历、判断、去重、排序等相关操作技巧,需要的朋友可以参考下
    2018-03-03
  • pandas分组聚合(agg,transform,apply)

    pandas分组聚合(agg,transform,apply)

    在SQL中我们经常使用 GROUP BY 将某个字段,按不同的取值进行分组, 在pandas中也有groupby函数,本文主要介绍了pandas分组聚合(agg,transform,apply),具有一定的参考价值,感兴趣的可以了解一下
    2024-04-04
  • 对YOLOv3模型调用时候的python接口详解

    对YOLOv3模型调用时候的python接口详解

    今天小编就为大家分享一篇对YOLOv3模型调用时候的python接口详解,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-08-08
  • PyTorch 导数应用的使用教程

    PyTorch 导数应用的使用教程

    这篇文章主要介绍了PyTorch 导数应用的使用教程,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-08-08
  • Python配置文件解析模块ConfigParser使用实例

    Python配置文件解析模块ConfigParser使用实例

    这篇文章主要介绍了Python配置文件解析模块ConfigParser使用实例,本文讲解了figParser简介、ConfigParser 初始工作、ConfigParser 常用方法、ConfigParser使用实例等内容,需要的朋友可以参考下
    2015-04-04
  • 图文详解感知机算法原理及Python实现

    图文详解感知机算法原理及Python实现

    感知机是二类分类的线性分类模型,其输入为实例的特征向量,输出为实例的类别(取+1和-1二值)。本文将为大家详细讲讲感知机算法的原理及实现,需要的可以参考一下
    2022-08-08
  • 编写多线程Python服务器 最适合基础

    编写多线程Python服务器 最适合基础

    很好的Python多线程基础教程,能够帮助初学者快速了解Python多线程简单实现。线程可以使任何程序运行得更快。但是这也增加了代码的复杂性。所以,如果你发现很难理解,那么添加更多的日志将有助于检查里面发生了什么
    2018-09-09
  • Python中的复制操作及copy模块中的浅拷贝与深拷贝方法

    Python中的复制操作及copy模块中的浅拷贝与深拷贝方法

    浅拷贝和深拷贝是Python基础学习中必须辨析的知识点,这里我们将为大家解析Python中的复制操作及copy模块中的浅拷贝与深拷贝方法:
    2016-07-07

最新评论