关于python DataFrame的合并方法总结

目录
  • python DataFrame的合并方法
    • #concat函数
    • #merge函数
    • #append函数
  • 把两个dataframe合并成一个

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)

以上为个人经验,希望能给大家一个参考,也希望大家多多支持我们。

(0)

相关推荐

  • python pandas dataframe 按列或者按行合并的方法

    concat 与其说是连接,更准确的说是拼接.就是把两个表直接合在一起.于是有一个突出的问题,是横向拼接还是纵向拼接,所以concat 函数的关键参数是axis . 函数的具体参数是: concat(objs,axis=0,join='outer',join_axes=None,ignore_index=False,keys=None,levels=None,names=None,verigy_integrity=False) objs 是需要拼接的对象集合,一般为列表或者字典 axis=0 是

  • python中DataFrame数据合并merge()和concat()方法详解

    目录 merge() 1.常规合并 ①方法1 ②方法2 重要参数 合并方式 left right outer inner 2.多对一合并 3.多对多合并 concat() 1.相同字段的表首位相连 2.横向表合并(行对齐) 3.交叉合并 总结 merge() 1.常规合并 ①方法1 指定一个参照列,以该列为准,合并其他列. import pandas as pd df1 = pd.DataFrame({'id': ['001', '002', '003'], 'num1': [120, 101,

  • python之DataFrame实现excel合并单元格

    在工作中经常遇到需要将数据输出到excel,且需要对其中一些单元格进行合并,比如如下表表格,需要根据A列的值,合并B.C列的对应单元格 pandas中的to_excel方法只能对索引进行合并,而xlsxwriter中,虽然提供有merge_range方法,但是这只是一个和基础的方法,每次都需要编写繁琐的测试才能最终调好,而且不能很好的重用.所以想自己写一个方法,结合dataframe和merge_range.大概思路是: 1.定义一个MY_DataFrame类,继承DataFrame类,这样能很

  • Python数据分析之 Pandas Dataframe合并和去重操作

    目录 一.之 Pandas Dataframe合并 二.去重操作 一.之 Pandas Dataframe合并 在数据分析中,避免不了要从多个数据集中取数据,那就避免不了要进行数据的合并,这篇文章就来介绍一下 Dataframe 对象的合并操作. Pandas 提供了merge()方法来进行合并操作,使用语法如下: pd.merge(left, right, how="inner", on=None, left_on=None, right_on=None, left_index=Fa

  • 关于python DataFrame的合并方法总结

    目录 python DataFrame的合并方法 #concat函数 #merge函数 #append函数 把两个dataframe合并成一个 python DataFrame的合并方法 Python的Pandas针对DataFrame,Series提供了多个合并函数,通过参数的调整可以轻松实现DatafFrame的合并. 首先,定义3个DataFrame df1,df2,df3,进行concat.merge.append函数的实验. df1=pd.DataFrame([[1,2,3],[2,3

  • python DataFrame中stack()方法、unstack()方法和pivot()方法浅析

    目录 1.stack() 2. unstack() 3. pivot() 总结 1.stack() stack()用于将列索引转换为最内层的行索引,这样叙述比较抽象,看示例就容易理解啦: 准备一组数据,给其设置双索引. import pandas as pd data = [['A类', 'a1', 123, 224, 254], ['A类', 'a2', 234, 135, 444], ['A类', 'a3', 345, 241, 324], ['B类', 'b1', 112, 412, 46

  • python DataFrame的shift()方法的使用

    目录 语法 示例 在python数据分析中,可以使用shift()方法对DataFrame对象的数据进行位置的前滞.后滞移动. 语法 DataFrame.shift(periods=1, freq=None, axis=0) periods可以理解为移动幅度的次数,shift默认一次移动1个单位,也默认移动1次(periods默认为1),则移动的长度为1 * periods. periods可以是正数,也可以是负数.负数表示前滞,正数表示后滞. freq是一个可选参数,默认为None,可以设为一

  • DataFrame 数据合并实现(merge,join,concat)

    merge merge 函数通过一个或多个键将数据集的行连接起来. 场景:针对同一个主键存在的两张包含不同特征的表,通过主键的链接,将两张表进行合并.合并之后,两张表的行数不增加,列数是两张表的列数之和. def merge(left, right, how='inner', on=None, left_on=None, right_on=None, left_index=False, right_index=False, sort=False, suffixes=('_x', '_y'), c

  • 在python中pandas的series合并方法

    如下所示: In [3]: import pandas as pd In [4]: a = pd.Series([1,2,3]) In [5]: b = pd.Series([2,3,4]) In [6]: c = pd.DataFrame([a,b]) In [7]: c Out[7]: 0 1 2 0 1 2 3 1 2 3 4 不过pandas直接用列表生成dataframe只能按行生成,如果是字典可以按列生成,比如: In [8]: c = pd.DataFrame({'a':a,'b'

  • Python pandas DataFrame数据拼接方法

    目录 前言 DataFrame数据拼接方法一:使用.append()方法. DataFrame数据拼接方法二:使用.concat()方法. 补充:Python同时合并多个DataFrame 总结 前言 在pandas模块中,通常我们都需要对类型为DataFrame的数据进行操作,其中最为常见的操作便是拼接了.比如我们将两个Excel表格中的数据读入,随后拼接完成后保存进一个新的Excel表格文件中.之前查找了相关的博客, 发现网络上鱼龙混杂.有些代码完全无法执行,为了提高效率,这里做一个详细地记

  • python使用append合并两个数组的方法

    本文实例讲述了python使用append合并两个数组的方法.分享给大家供大家参考.具体如下: lista = [1,2,3] listb = [4,5,6] mergedlist =[] for elem in lista: mergedlist.append(elem) for elem in listb: mergedlist.append(elem) 希望本文所述对大家的Python程序设计有所帮助.

  • Python使用zip合并相邻列表项的方法示例

    本文实例讲述了Python使用zip合并相邻列表项的方法.分享给大家供大家参考,具体如下: 1>使用zip()函数和iter()函数,来合并相邻的列表项 >>> x [1, 2, 3, 4, 5, 6, 7, 8, 9] >>> zip(*[iter(x)]*2) [(1, 2), (3, 4), (5, 6), (7, 8)] >>> zip(*[iter(x)]*3) [(1, 2, 3), (4, 5, 6), (7, 8, 9)] >

  • python DataFrame获取行数、列数、索引及第几行第几列的值方法

    1.df=DataFrame([{'A':'11','B':'12'},{'A':'111','B':'121'},{'A':'1111','B':'1211'}]) print df.columns.size#列数 2 print df.iloc[:,0].size#行数 3 print df.ix[[0]].index.values[0]#索引值 0 print df.ix[[0]].values[0][0]#第一行第一列的值 11 print df.ix[[1]].values[0][1]

随机推荐