精华内容
下载资源
问答
  • DataFrame合并

    2020-02-22 18:25:21
    DataFrame合并和删除

    DataFrame合并

    合并方式有三种:

    1、join (着重关注的是行的合并)

    • left 左连接df3.join(df4,how='left')
      简单合并(默认是left左连接,以左侧df3为基础)

    • right右连接df3.join(df4,how='right')
      右连接,以右侧的数组为基础

    • outer外连接df3.join(df4,how='outer')
      左右两侧都包含

    所有合并连接,遇到没有的值都默认为NaN

    • 合并多个DataFrame对象df3.join([df4,df5])
      df4,df5两个数组都是以df3数组为基础合并的

    2、merge(着重关注的是列的合并)

    • how=’inner’
      默认下是根据左右对象中出现同名的列作为连接的键
      pd.merge(df1,df2)

    • 指定列名合并
      pd.merge(df1,df2,on='名字',suffixes=['_1','_2'])
      根据名字这一列合并,suffixes 设置列名的后缀名(相同列不同内容时用)

    • 左连接left
      pd.merge(df1,df2,how='left')
      以左侧为准

    • 右连接right
      pd.merge(df1,df2,how='right')
      以右侧为准

    • 外连接outer
      pd.merge(df1,df2,how='outer')
      df1和df2数组全部包含

    • 根据多个键连接(列名):
      pd.merge(df1,df2,on=['职称','名字'])
      根据 ‘职称’,‘名字’ 进行合并

    df1、df2、df3、df4、df5如下:

    df1=pd.DataFrame({'名字':list('ABCDE'),'性别':['男','女','男','男','女'],
    '职称':['副教授','讲师','助教','教授','助教']},index=range(1001,1006))
    df2=pd.DataFrame({'名字':list('ABDAX'),
                      '课程':['C++','计算机导论','汇编','数据结构','马克思原理'],
                      '职称':['副教授','讲师','教授','副教授','讲师']},
                     index=[1001,1002,1004,1001,3001])
    df3=pd.DataFrame({'Red':[1,3,5],'Green':[5,0,3]},index=list('abc'))
    df4=pd.DataFrame({'Blue':[1,9,8],'Yellow':[6,6,7]},index=list('cde'))
    df5=pd.DataFrame({'Brown':[3,4,5],'White':[1,1,2]},index=list('aed'))
    

    3、Concat

    objs:合并对象
    axis:合并方式,0-列,1-行
    ignore_index:是否忽略索引

    • 按行合并
      pd.concat([df1,df2],axis=1)
      按行合并会以拥有最多行的为基准,最后合并后呈现的行数就是为基准的行数。
    df1=pd.DataFrame(np.arange(6).reshape(3,2),columns=['four','five'])
    df2=pd.DataFrame(np.arange(6).reshape(2,3),columns=['one','two','three'])
    result=pd.concat([df1,df2],axis=1)
    print(result)
    
    • 按列合并
      pd.concat([df1,df2],axis=0,ignore_index=True)
      按列合并不会合并行,所以即使行索引一致也不会合并。
    result=pd.concat([df1,df2],axis=0,ignore_index=True)
    print(result)
    
    • 用内连接求交集(连接方式,共有’inner’,’left’,right’,’outer’)
      pd.concat([df1,df2],axis=1,join='inner')
      合并相同的索引行数据
    • 指定部分索引进行连接
      pd.concat([s1,s2],axis=1,join_axes=[list('abc')])
      指定索引 abc 进行合并
    s1=pd.Series([1,2],index=list('ab'))
    s2=pd.Series([3,4,5],index=list('bde'))
    print(s1)
    print(s2)
    # 指定部分索引进行连接
    print(pd.concat([s1,s2],axis=1,join_axes=[list('abc')]))
    
    • 创建层次化索引
      pd.concat([s1,s2],keys=['A','B'])
      就是给s1和s2合并之后分别起了名字叫A和B,相当于数组的索引(key)
    • 当纵向连接时keys为列名
      pd.concat([s1,s2],keys=['A','D'],axis=1)
    • 用字典的方式连接同样可以创建层次化列索引:
      pd.concat({'A':s1,'B':s2,axis=1)
    展开全文
  • Dataframe 合并

    2019-10-08 16:53:55
    一、简介 python中pandas的DataFrame是数据分析中常用的数据结构之一,通常从外部文件中导入的文件都是存储为DataFrame格式的,因此掌握DataFrame的相关操作有助...二、DataFrame合并 其实可以将python的Da...

    一、简介

    python中pandas的DataFrame是数据分析中常用的数据结构之一,通常从外部文件中导入的文件都是存储为DataFrame格式的,因此掌握DataFrame的相关操作有助于快速准确的进行后续的数据分析,本节主要介绍DataFrame的合并过程,主要参考了《利用python进行数据分析》这本书。
    二、DataFrame合并
    其实可以将python的DataFrame类型的一个数据看出一个SQL中的数据表,DataFrame的合并其实就有SQL中的表关联是完全相似的,其会有内连接、外链接、左连接和右连接之类的分类。下面分别从完全相同的DataFrame合并及按照指定列进行合并两个方面介绍。
    (一)完全相同的DataFrame的合并
    这里面所说的完全相同是指两个DataFrame的所有的列名完全相同,当然列名不同也是能合并的,具体解释如下图的程序所示:
    首先定义三个不同的DataFrame:
     Python Code 
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
     
    from pandas import Series,DataFrame 
    import pandas as pd

    data1 = {'state':['ohio','ohio'],
             'year':[2000,2001]}
    data2 = {'state':['Nevada','Nevada'],
             'year':[2001,2002]}

    frame1 = DataFrame(data1,columns=['state','year'])
    frame2 = DataFrame(data2,columns=['state','year'],index=['one','two'])
    frame3 = DataFrame(data1,columns=['state','year1'])

    print(frame1)
    print('--------------------------')
    print(frame2)
    print('--------------------------')
    print(frame3)
    三个DataFrame中的内容分别如下图所示:
    python <wbr>pandas <wbr>DataFrame合并
    通过合并DataFrame可以得到如下图所示的结果:
    python <wbr>pandas <wbr>DataFrame合并
    其中frame1和frame2的有完全相同的列名,因此合并后的结果merge1还是有两个列;而frame1和frame3只有一个列名相同,因此合并的结果是保留共同的列在加上各自所有的列名,故结果为三列数据了。
    由上面的解释我们同时能够得到append方法的另外一个功能就是可以给DataFrame方法添加列。
    (二)按照指定列DataFrame的合并(merge)
    按照指定列合并DataFrame就相当于SQL中不同表之间按照不同的字段进行join操作一样,DataFrame中的合并主要用merge函数,下面首先解释一下merge函数的主要用法及参数:
    pd.merge(df1,df2)
    主要参数介绍:
    left:参与合并的左边的DataFrame(相当于SQL的join中的左表);
    right:参数合并的右边的DataFrame(相当于SQL的join中的右表);
    how:为合并的方式,分别为'inner','outer','left','right',默认为'inner'(相当于SQl中表连接的内连接、外链接、左链接和右连接);
    on:两个DataFrame用户连接的列名,必须同时存在于两个DataFrame中,如果未指定则为两个表的交集作为连接键;
    left_on:左表用于连接的列(主要用户两个DataFrame不存在相同的列名时);
    right_on:右表用于连接的列;
    left_index:将左边的DataFrame的索引作为连接键;
    right_index:将右边的DataFrame的索引作为连接键;
    sort:根据连接键对合并的结果进行排序;
    suffixes:字符串的元组,用于追加于重叠列名的末尾,默认为(_x,_y)
     

    转载于:https://www.cnblogs.com/ziheIT/p/8974798.html

    展开全文
  • Dataframe合并

    千次阅读 2018-09-21 09:11:28
    本文讲的是合并两个同列名的Dataframe数据,有两种方案。首先随意的产生两个通列名的Dataframe,如下所示: import pandas as pd from pandas import DataFrame df=DataFrame(np.arange(12).reshape((3,4)),index=...

           本文讲的是合并两个同列名的Dataframe数据,有两种方案。首先随意的产生两个通列名的Dataframe,如下所示: 

    import pandas as pd
    from pandas import DataFrame
    df=DataFrame(np.arange(12).reshape((3,4)),index=['a','b','c'],columns=['aa','bb','cc','dd'],dtype=str)
    df1=DataFrame(np.arange(4,16).reshape((3,4)),index=['a','b','c'],columns=['aa','bb','cc','dd'],dtype=str)
    print(da,da1)

    展示两个dataframe:

    df

      aa bb  cc  dd
    a  0  1   2   3
    b  4  5   6   7
    c  8  9  10  11     
    
    

    df1

       aa  bb  cc  dd
    a   4   5   6   7
    b   8   9  10  11
    c  12  13  14  15
       aa  bb  cc  dd

    现在合并两个Dataframe的数据:

    1.利用df1.append(df2)。

    print(df.append(df1))

     结果展示:

      aa  bb  cc  dd
    a   0   1   2   3
    b   4   5   6   7
    c   8   9  10  11
    a   4   5   6   7
    b   8   9  10  11
    c  12  13  14  15

    2.利用concat函数。

    print(pd.concat([df,df1]))

    结果展示:

       aa  bb  cc  dd
    a   0   1   2   3
    b   4   5   6   7
    c   8   9  10  11
    a   4   5   6   7
    b   8   9  10  11
    c  12  13  14  15

     

    展开全文
  • dataframe 合并

    千次阅读 2019-01-18 00:09:20
    pandas提供了一个类似于关系数据库的连接(join)操作的方法merage,可以根据一个或多个键将不同DataFrame中的行连接起来 语法如下: merge(left, right, how='inner', on=None, left_on=None, right_on=None,  left_...

    merge  通过键拼接列

    pandas提供了一个类似于关系数据库的连接(join)操作的方法merage,可以根据一个或多个键将不同DataFrame中的行连接起来
    语法如下:

    merge(left, right, how='inner', on=None, left_on=None, right_on=None,
          left_index=False, right_index=False, sort=True,
          suffixes=('_x', '_y'), copy=True, indicator=False)
    用于通过一个或多个键将两个数据集的行连接起来,类似于 SQL 中的 JOIN。

    该函数的典型应用场景是:针对同一个主键存在两张包含不同字段的表,现在我们想把他们整合到一张表里。在此典型情况下,结果集的行数并没有增加,列数则为两个元数据的列数和减去连接键的数量。

    on=None 用于显示指定列名(键名),如果该列在两个对象上的列名不同,则可以通过 left_on=None, right_on=None 来分别指定。或者想直接使用行索引作为连接键的话,就将 left_index=False, right_index=False 设为 True。
    how='inner' 参数指的是当左右两个对象中存在不重合的键时,取结果的方式:inner 代表交集;outer 代表并集;left 和 right 分别为取一边。
    suffixes=('_x','_y') 指的是当左右对象中存在除连接键外的同名列时,结果集中的区分方式,可以各加一个小尾巴。
    对于多对多连接,结果采用的是行的笛卡尔积。
    参数说明:
    left与right:两个不同的DataFrame
    how:指的是合并(连接)的方式有inner(内连接),left(左外连接),right(右外连接),outer(全外连接);默认为inner
    on : 指的是用于连接的列索引名称。必须存在右右两个DataFrame对象中,如果没有指定且其他参数也未指定则以两个DataFrame的列名交集做为连接键
    left_on:左则DataFrame中用作连接键的列名;这个参数中左右列名不相同,但代表的含义相同时非常有用。
    right_on:右则DataFrame中用作 连接键的列名
    left_index:使用左则DataFrame中的行索引做为连接键
    right_index:使用右则DataFrame中的行索引做为连接键
    sort:默认为True,将合并的数据进行排序。在大多数情况下设置为False可以提高性能
    suffixes:字符串值组成的元组,用于指定当左右DataFrame存在相同列名时在列名后面附加的后缀名称,默认为('_x','_y')
    copy:默认为True,总是将数据复制到数据结构中;大多数情况下设置为False可以提高性能
    indicator:在 0.17.0中还增加了一个显示合并数据中来源情况;如只来自己于左边(left_only)、两者(both)
     

    merge一些特性示例:

    1.默认以重叠的列名当做连接键。

     

    In [16]: df1=DataFrame({'key':['a','b','b'],'data1':range(3)})
     
    In [17]: df2=DataFrame({'key':['a','b','c'],'data2':range(3)})
     
    In [18]: pd.merge(df1,df2)   #没有指定连接键,默认用重叠列名,没有指定连接方式
    Out[18]: 
       data1 key  data2
    0      0   a      0
    1      1   b      1
    2      2   b      1
     

     

     

    2.默认做inner连接(取key的交集),连接方式还有(left,right,outer),制定连接方式加参数:how=''

     

    In [19]: pd.merge(df2,df1)
    Out[19]: 
       data2 key  data1
    0      0   a      0
    1      1   b      1
    2      1   b      2                   #默认内连接,可以看见c没有连接上。
     
    In [20]: pd.merge(df2,df1,how='left')    #通过how,指定连接方式
    Out[20]: 
       data2 key  data1
    0      0   a      0
    1      1   b      1
    2      1   b      2
    3      2   c    NaN
     

     

     

    3.多键连接时将连接键组成列表传入,例:pd.merge(df1,df2,on=['key1','key2']

     

    In [23]: right=DataFrame({'key1':['foo','foo','bar','bar'],
        ...:     'key2':['one','one','one','two'],
        ...:     'lval':[4,5,6,7]})
     
    In [24]: left=DataFrame({'key1':['foo','foo','bar'],
        ...:     'key2':['one','two','one'],
        ...:     'lval':[1,2,3]})
     
    In [25]: right=DataFrame({'key1':['foo','foo','bar','bar'],
        ...:     'key2':['one','one','one','two'],
        ...:     'lval':[4,5,6,7]})
     
    In [26]: pd.merge(left,right,on=['key1','key2'],how='outer')  #传出数组
    Out[26]: 
      key1 key2  lval_x  lval_y
    0  foo  one       1       4
    1  foo  one       1       5
    2  foo  two       2     NaN
    3  bar  one       3       6
    4  bar  two     NaN       7
     

     

     

    4.如果两个对象的列名不同,可以分别指定,例:pd.merge(df1,df2,left_on='lkey',right_on='rkey')

     

    In [31]: df3=DataFrame({'key3':['foo','foo','bar','bar'], #将上面的right的key 改了名字
        ...:     'key4':['one','one','one','two'],
        ...:     'lval':[4,5,6,7]})
     
    In [32]: pd.merge(left,df3,left_on='key1',right_on='key3')  #键名不同的连接
    Out[32]:  
      key1 key2  lval_x key3 key4  lval_y
    0  foo  one       1  foo  one       4
    1  foo  one       1  foo  one       5
    2  foo  two       2  foo  one       4
    3  foo  two       2  foo  one       5
    4  bar  one       3  bar  one       6
    5  bar  one       3  bar  two       7

    5.以索引当做连接键,使用参数left_index=true,right_index=True (最好使用join)

    join 拼接列,主要用于索引上的合并


    join方法提供了一个简便的方法用于将两个DataFrame中的不同的列索引合并成为一个DataFrame

    join(self, other, on=None, how='left', lsuffix='', rsuffix='',sort=False):
    其中参数的意义与merge方法基本相同,只是join方法默认为左外连接how=left

    1.默认按索引合并,可以合并相同或相似的索引,不管他们有没有重叠列。

    2.可以连接多个DataFrame

    3.可以连接除索引外的其他列

    4.连接方式用参数how控制

    5.通过lsuffix='', rsuffix='' 区分相同列名的列
    --------------------- 
    作者:百事悠弦 
    来源:CSDN 
    原文:https://blog.csdn.net/zutsoft/article/details/51498026 
     

    展开全文
  • python 把几个DataFrame合并成一个DataFrame——merge,append,join,conca
  • R语言dataframe合并函数merge实战 目录 R语言dataframe合并函数merge实战 #仿真数据 #两个dataframe合并 #merge并保留不匹配的数据为NA值 #多个dataframe数据的合并 #dplyr包的join功能 #仿真数据 ...
  • 【转】DataFrame合并

    2021-05-29 06:56:26
    参考:python 把几个DataFrame合并成一个DataFrame——merge,append,join,conca 横向合并(扩展列):merge,类似SQL的join,内连接,外连接等。 纵向合并(扩展行):append ...
  • python DataFrame合并方法

    千次阅读 2019-01-30 14:38:24
    python DataFrame合并 一、merge方法 DataFrame.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,...
  • Pandas DataFrame合并,分组操作
  • python dataframe 合并

    2021-01-15 10:59:36
    #join表示合并方式,默认join=‘outer’,设为’inner’表示只合并相同的部分 # axis=0时合并结果为相同column的数据 ...# ignore_index = True表示合并dataframe后会清楚index pd.concat([df1,df2],ignore_index=T
  • from pandas import Series,DataFrame import pandas as pd 合并数据集pandas.merge: a) 根据一个或多个键将不同... c) 数据库风格的DataFrame 合并说明: 关联键只有一列,且列名相同时:on='相同列...
  • concat 可以把多个列名相同的DataFrame合并,可以设置行合并还是列合并 1. merge(根据相同的列值连接合并) how=连接方式 on=合并列名 默认内连接方式为内连接 不设置只考虑key列中共同有的值 df1 = pd...
  • python 把几个DataFrame合并成一个DataFrame——merge,append,join,concat 1、merge pd.merge(left, right, how='inner', on=None, left_on=None, right_on=None, left_index=False, right_index=False, sort...
  • 今天是pandas数据处理第8篇文章,我们一起来聊聊dataframe合并。常见的数据合并操作主要有两种,第一种是我们新生成了新的特征,想要把它和旧的特征合并在一起。第二种是我们新获取了一份数据集,想要扩充旧的数据...
  • 1、 两个dataframe 外连接 df3= df.merge(df2,on =['datekey','user_id','is_pay'],how = 'outer') ...2、多个dataframe外连接合并 以txt格式存储的多个本地文件为例(1018.txt,1019.txt),文件名分别为:...
  • pandas提供了各种工具,在连接/合并类型操作的情况下,可以方便地将序列、数据帧和面板对象与各种索引集逻辑和关系代数功能组合在一起。 1. merge pd.merge(left, right, how='inner', on=None, left_on=None, right...
  • pandas之DataFrame合并merge

    千次阅读 2019-08-01 20:58:00
    merge操作实现两个DataFrame之间的合并,类似于sql两个表之间的关联查询。 merge的使用方法及参数解释如下: pd.merge(left, right, on=None, how='inner', left_on=None, right_on=None, left_index=False, ...
  • 这样就可以将两个dataframe df1,df2合并 可选参数: (1)ignore_index,默认是false ,但是会导致合并后的dataframe的索引错误, ser1 = pd.Series(['A', 'B', 'C']) ser2 = pd.Series(['D', 'E', 'F']) pd....
  • 我正在尝试将数据帧(df1)与另一个df2可能为空的数据帧(df2)合并.合并条件是df1.index = df2.z...In [31]:import pandas as pdIn [32]:df1 = pd.DataFrame({'a': [1, 2, 3], 'b': [4, 5, 6], 'c': [1, 2, 3]})df2 =...
  • Is there any nicer way to prefix or rename all or multiple columns at the same time of a given SparkSQL DataFrame than calling multiple times dataFrame.withColumnRenamed()?An example would be if I wan...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 24,488
精华内容 9,795
关键字:

dataframe合并