关于python DataFrame的合并方法总结

作者:haha_point 时间:2022-02-02 14:13:58 

python DataFrame的合并方法

Python的Pandas针对DataFrame,Series提供了多个合并函数,通过参数的调整可以轻松实现DatafFrame的合并。

首先,定义3个DataFrame df1,df2,df3,进行concat、merge、append函数的实验。

df1=pd.DataFrame([[1,2,3],[2,3,4]],columns=['a','b','c'])
df2=pd.DataFrame([[2,3,4],[3,4,5]],columns=['a','b','c'])
df3=pd.DataFrame([[1,2,3],[2,3,4]],columns=['a','b','d'])
df1
  a  b  c
0  1  2  3
1  2  3  4
df2
  a  b  c
0  2  3  4
1  3  4  5
df3
  a  b  d
0  1  2  3
1  2  3  4

#concat函数

pandas中concat函数的完整表达,包含多个参数,常用的有axis,join,ignore_index.

concat函数的第一个参数为objs,一般为一个list列表,包含要合并两个或多个DataFrame,多个Series

pandas.concat(objs, axis=0, join='outer', join_axes=None, ignore_index=False,
           keys=None, levels=None, names=None, verify_integrity=False,
           copy=True)

1.axis表示合并方向,默认axis=0,两个DataFrame按照索引方向纵向合并,axis=1则会按照columns横向合并。

pd.concat([df1,df2],axis=1)
  a  b  c  a  b  c
0  1  2  3  2  3  4
1  2  3  4  3  4  5

2.join表示合并方式,默认join=‘outer’,另外的取值为’inner’,只合并相同的部分,axis=0时合并结果为相同列名的数据,axis=1时为具有相同索引的数据

pd.concat([df2,df3],axis=0,join='inner')
  a  b
0  2  3
1  3  4
0  1  2
1  2  3
pd.concat([df2,df3],axis=1,join='inner')
  a  b  c  a  b  d
0  2  3  4  1  2  3
1  3  4  5  2  3  4

3.ignore_index表示索引的合并方式,默认为False,会保留原df的索引,如果设置ignore_index=True,合并后的df会重置索引。

pd.concat([df1,df2],ignore_index=True)
  a  b  c
0  1  2  3
1  2  3  4
2  2  3  4
3  3  4  5

#merge函数

merge函数是pandas提供的一种数据库式的合并方法。

on可以指定合并的列、索引,how则是与数据库join函数相似,取值为left,right,outer,inner.left,right分别对应left outer join, right outer join.

pandas.merge(left, right, how='inner', on=None, left_on=None, right_on=None,
          left_index=False, right_index=False, sort=False,
          suffixes=('_x', '_y'), copy=True, indicator=False,
          validate=None):

merge函数可以通过pandas.merge(df1,df2)、df1.merge(df2)两种形式来实现两个DataFrame的合并,df1.merge(df2)是默认left=self的情况。

df_merge =df1.merge(df3,on=['a','b'])
   a  b  c  d
0  1  2  3  3
1  2  3  4  4

#append函数

append函数是pandas针对DataFrame、Series等数据结构合并提供的函数。

df1.append(self, other, ignore_index=False, verify_integrity=False)

df1.append(df2)与pd.concat([df1,df2],ignore_index=False)具有相同的合并结果

df1.append(df2)
   a  b  c
0  1  2  3
1  2  3  4
0  2  3  4
1  3  4  5

更多使用方法可以参考pandas关于数据合并的官方文档http://pandas.pydata.org/pandas-docs/stable/merging.html

把两个dataframe合并成一个

1.merage

result = pd.merge(对象1, 对象2, on='key')

对象1 和 对象2分别为要合并的dataframe,key是在两个dataframe都存在的列(类似于数据库表中的主键)

2.append

result = df1.append(df2)
result = df1.append([df2, df3])
result = df1.append(df4, ignore_index=True)

3.join

result = left.join(right, on=['key1', 'key2'], how='inner')

4.concat

pd.concat(objs, axis=0, join='outer', join_axes=None, ignore_index=False,
     keys=None, levels=None, names=None, verify_integrity=False,
     copy=True)
frames = [df1, df2, df3]
result = pd.concat(frames)
result = pd.concat(frames, keys=['x', 'y', 'z'])
result = pd.concat([df1, df4], ignore_index=True)

来源:https://blog.csdn.net/haha_point/article/details/86512316

标签:python,DataFrame,合并
0
投稿

猜你喜欢

  • 20个解决日常编程问题的Python代码分享

    2021-02-14 03:57:41
  • python实现字典(dict)和字符串(string)的相互转换方法

    2021-10-19 18:22:44
  • Python使用正则表达式过滤或替换HTML标签的方法详解

    2023-02-08 10:49:52
  • Django 多环境配置详解

    2022-01-25 06:38:49
  • PHP截取指定图片大小的方法

    2023-09-11 13:20:21
  • jupyter notebook oepncv 显示一张图像的实现

    2022-03-26 20:09:19
  • Python numpy.interp的实例详解

    2023-01-21 07:07:06
  • pycharm最新免费激活码至2099年(21.3.18亲测可用)

    2023-10-02 09:53:20
  • ajax返回中文乱码问题解决

    2009-04-13 16:07:00
  • innerHTML 的一些问题

    2008-06-17 17:39:00
  • Python使用pymongo模块操作MongoDB的方法示例

    2023-03-26 08:58:46
  • 详解利用OpenCV提取图像中的矩形区域(PPT屏幕等)

    2022-06-23 16:42:41
  • 表单name与id的区别和相似之处

    2007-12-13 12:55:00
  • 学习ASP和编程的28个观点

    2008-06-27 12:57:00
  • Python Pandas中根据列的值选取多行数据

    2023-02-16 04:17:59
  • MySQL性能诊断与调优工具

    2010-11-02 11:41:00
  • python3 property装饰器实现原理与用法示例

    2021-07-10 05:02:28
  • Python实现的列表排序、反转操作示例

    2023-06-19 11:14:27
  • IE7的web标准之道 Ⅱ

    2008-08-13 12:50:00
  • 豆瓣的Url结构方式一览

    2010-03-01 12:44:00
  • asp之家 网络编程 m.aspxhome.com