精华内容
下载资源
问答
  • dataframe横向合并

    千次阅读 2019-01-06 23:22:14
    我们在用python处理数据的时候,很多时候会遇到数据合并的问题,我们在这里介绍DataFrame的合并问题,横向合并我们介绍三种方法: 1.1 merge 类似于关系型数据库的连接方式,可以根据一个或多个键将不同的DatFrame...

    我们在用python处理数据的时候,很多时候会遇到数据合并的问题,我们在这里介绍DataFrame的合并问题,横向合并我们介绍三种方法:
    1.1 merge
    类似于关系型数据库的连接方式,可以根据一个或多个键将不同的DatFrame连接起来。该函数的典型应用场景是,针对同一个主键存在两张不同字段的表,根据主键整合到一张表里面。

    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)
    

    参数介绍:
    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:显示合并数据中数据的来源情况
    举例:

    import pandas as pd 
    from pandas import DataFrame
    
    df1=DataFrame({'key':['a','b','b'],'data1':range(3)})    
      key  data1
    0   a      0
    1   b      1
    2   b      2
    df2=DataFrame({'key':['a','b','c'],'data2':range(3)})  
      key  data2
    0   a      0
    1   b      1
    2   c      2
    # 1.默认以重叠的列名当做连接键。  
    pd.merge(df1,df2)   #没有指定连接键,默认用重叠列名,没有指定连接方式  
      
       data1 key  data2  
    0      0   a      0  
    1      1   b      1  
    2      2   b      1  
     
    # 2.默认做inner连接(取key的交集),连接方式还有(left,right,outer),制定连接方式加参数:how=''
    pd.merge(df2,df1)  
      
       data2 key  data1  
    0      0   a      0  
    1      1   b      1  
    2      1   b      2                   #默认内连接,可以看见c没有连接上。  
      
    pd.merge(df2,df1,how='left')    #通过how,指定连接方式  
     
       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']
    right=DataFrame({'key1':['foo','foo','bar','bar'],  
             'key2':['one','one','one','two'],  
             'lval':[4,5,6,7]})  
    left=DataFrame({'key1':['foo','foo','bar'],  
             'key2':['one','two','one'],  
             'lval':[1,2,3]})  
    right=DataFrame({'key1':['foo','foo','bar','bar'],  
             'key2':['one','one','one','two'],  
             'lval':[4,5,6,7]})  
    pd.merge(left,right,on=['key1','key2'],how='outer')  #传出数组  
       
      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')
    df3=DataFrame({'key3':['foo','foo','bar','bar'], #将上面的right的key 改了名字  
             'key4':['one','one','one','two'],  
             'lval':[4,5,6,7]})  
    pd.merge(left,df3,left_on='key1',right_on='key3')  #键名不同的连接  
       
      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  
    

    1.2 join
    join主要是基于引索的纵向合并

    x=cdata.join(maxdata)
    

    1.3 concat
    concat方法相当于数据库中的全连接(union all),它不仅可以指定连接的方式(outer join或inner join)还可以指定按照某个轴进行连接。与数据库不同的是,它不会去重,但是可以使用drop_duplicates方法达到去重的效果。

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

    pd.concat()只是单纯的把两个表拼接在一起,参数axis是关键,它用于指定是行还是列,axis默认是0。当axis=0时,pd.concat([obj1, obj2])的效果与obj1.append(obj2)是相同的;当axis=1时,pd.concat([obj1, obj2], axis=1)的效果与pd.merge(obj1, obj2, left_index=True, right_index=True, how=‘outer’)是相同的(需要注意的是concat也是通过引索识别的)。merge方法的介绍请参看下文。
    参数介绍:
    objs:需要连接的对象集合,一般是列表或字典;
    axis:连接轴向;
    join:参数为‘outer’或‘inner’;
    join_axes=[]:指定自定义的索引;
    keys=[]:创建层次化索引;
    ignore_index=True:重建索引

    dat=pd.concat([cdata,maxdata,mindata,x],axis=1)
    
    展开全文
  • DataFrame 对象合并

    千次阅读 2018-02-27 00:07:44
    Pandas中 DataFrame 对象数据纵向、横向合并。 Pandas 中 concat 函数参数理解与简单应用。 异常的简单处理。 目的 再利用Python开发过程中,常用到 DataFrame 对象的横、纵向合并,所以作此总结。 1....

    主要内容

    • Pandas中 DataFrame 对象数据纵向、横向合并。
    • Pandas 中 concat 函数参数理解与简单应用。
    • 异常的简单处理。

    目的

    • 再利用Python开发过程中,常用到 DataFrame 对象的横、纵向合并,所以作此总结。

    1. 纵向合并DataFrame

    • DataFrame 对象所有列列名一致
    df = pd.DataFrame([['bird', 'polly'], ['monkey', 'george']],columns=['animal', 'name'])
    df2 = pd.DataFrame([['pig', 'xixi'], ['giraffe', 'feifei']],columns=['animal', 'name'])
    
    pd.concat([df,df2], axis=0) # 纵向合并
    • 效果图
      zongxaing

    2. 横向合并DataFrame

    df3=pd.DataFrame([['a', 1], ['b', 2]],columns=['letter', 'number'])
    df4 = pd.DataFrame([['bird', 'polly'], ['monkey', 'george']],columns=['animal', 'name'])
    
    pd.concat([df3,df4], axis=1) # 横向合并
    • 效果图
      hengxiang

    3. 集成验证(verify_integrity)

    • verify_integrity=true, 合并后的 index 值不能重复;否则抛出异常
    df5 = pd.DataFrame([1], index=['a'])
    df6 = pd.DataFrame([2], index=['a'])
    
    try:
        print (pd.concat([df5, df6], verify_integrity=False))
    except ValueError:
        print ("ValueError: Indexes have overlapping values: ['a']")
    
    # 另一种写法
    # except ValueError as args:
    #     print (args)
    • 效果图
      xiaoguo

    concat 其他参数

    Signature : 
        pd.concat(objs, axis=0, join='outer', join_axes=None, ignore_index=False, keys=None, levels=None, names=None, verify_integrity=False, copy=True)
    
    Docstring:
        Concatenate pandas objects along a particular axis with optional set logic
    along the other axes.
    
    objs             : A sequence or mapping of Series, DataFrame, or Panel objects
    axis             : {0/'index', 1/'columns'}, default 0
    join             : {'inner', 'outer'}, default 'outer'
    join_axes        : list of Index objects
    ignore_index     : boolean, default False
    keys             : sequence, default None
    levels           : list of sequences, default None
    names            : list, default None
    verify_integrity : boolean, default False
    copy             : boolean, default True
    • 具体事例
    # coding: utf-8
    import pandas as pd
    
    # ## pd.concat 参数测试
    s1 = pd.DataFrame(['a', 'b'], columns=['alpha'])
    s2 = pd.DataFrame(['c', 'd'], columns=['alpha'])
    
    
    # ### objs 参数
    pd.concat([s1, s2], )
    
    
    # ### objs、ignore_index 参数
    # - 重置索引
    pd.concat([s1, s2], ignore_index=True)
    
    
    # ### objs、keys 参数
    pd.concat([s1, s2], keys=['s1', 's2',])
    
    
    # ### objs、keys、names 参数
    pd.concat([s1, s2], keys=['s1', 's2'],names=['Series name', 'Row ID'])
    
    
    # ### objs、columns 参数
    df1=pd.DataFrame([['a', 1], ['b', 2]],columns=['letter', 'number'])
    df1
    
    
    df3 = pd.DataFrame([['c', 3, 'cat'], ['d', 4, 'dog']],columns=['letter', 'number', 'animal'])
    df3
    
    
    # ### objs、join 参数
    # - 以内交( inner )方式合并 DataFrame
    pd.concat([df1, df3], join="inner")
    
    
    # ### objs、join 参数
    # - 以外交( outer )方式合并 DataFrame
    pd.concat([df1, df3], join="outer")
    
    
    df4 = pd.DataFrame([['bird', 'polly'], ['monkey', 'george']],columns=['animal', 'name'])
    df4
    
    
    # ### objs、axis 参数,横向合并 DataFrame
    # - 纵向合并 数据列需一致
    pd.concat([df1, df4], axis=1)
    • 效果图
      2018

    参考

    展开全文
  • 需要将两个DataFrame进行横向拼接; 对 A_DataFrame 拼接一列数据; 数据样例如下: 将右侧source_df中的 “$factor” 列拼接到左侧qlib_df中,但左侧数据是分钟级的数据,右侧是“day”级的数据。 需要将“day...

    需要将两个DataFrame进行横向拼接;

    对 A_DataFrame 拼接一列数据;

    数据样例如下:

    将右侧source_df中的 “$factor” 列拼接到左侧qlib_df中,但左侧数据是分钟级的数据,右侧是“day”级的数据。

    需要将“day”级数据的 “$factor” 填充到对应一天内的分钟级里面;

     

    首先将二者的日期作为索引;

     

     然后对其进行合并(pd.concat()

    source_df = pd.concat([source_df, qlib_df['$factor']], axis=1, join_axes=[source_df.index])   
    # 其中 join_axes 参数为指定根据哪个索引进行数据对齐
    # join_axes=[source_df.index] 则根据source_df的索引进行数据对齐

    执行过后,数据则被拼接,并且相同索引下的值都一样。

     

     

     

     

    转载于:https://www.cnblogs.com/bigtreei/p/10278581.html

    展开全文
  • x.join(y)

    在这里插入图片描述

    x.join(y)
    

    在这里插入图片描述

    展开全文
  • 【转】DataFrame合并

    2021-05-29 06:56:26
    参考:python 把几个DataFrame合并成一个DataFrame——merge,append,join,conca 横向合并(扩展列):merge,类似SQL的join,内连接,外连接等。 纵向合并(扩展行):append ...
  • 我现在想把他们变成以f1列为索引、横向排列的一个表格,效果就是这样: ![图片说明](https://img-ask.csdn.net/upload/201908/06/1565060932_841242.jpg) 然后我尝试了以下做法: df5 = pd.concat([df11.set_...
  • 今天讲的是pandas之DataFrame的级联、合并操作。 1、级联操作(就是将多个DataFrame进行横向或者纵向的拼接): pd.concat() pd.append() pandas使用pd.concat函数,这个与np.concatenate函数类似,只是多了一些...
  • Python合并DataFrame

    2017-08-16 17:22:04
    于是有一个突出的问题,是横向拼接还是纵向拼接,所以concat 函数的关键参数是axis 。 函数的具体参数是: concat(objs,axis=0,join='outer',join_axes=None,ignore_index=False,keys=None,levels=None,names=None...
  • 级联操作(就是将多个DataFrame进行横向或者纵向的拼接) pd.concat() pd.append() pandas使用pd.concat函数,这个与np.concatenate函数类似,只是多了一些参数: objs axis=0 keys join=‘outer’/‘inner’:这...
  • id和age这两个字段,另一个表单有user_id和sex这两个字段,要把这两个表合并成只有user_id、age、sex三个字段的表怎么办的,普通的拼接是做不到的,因为user_id每一行之间不是对应的,像拼积木似的横向拼接肯定是...
  • 于是有一个突出的问题,是横向拼接还是纵向拼接,所以concat 函数的关键参数是axis 。 函数的具体参数是: concat(objs,axis=0,join='outer',join_axes=None,ignore_index=False,keys=None,levels=None,names=None,...
  • python pandas dataframe 的按列或者按行合并

    万次阅读 多人点赞 2019-07-30 18:32:24
    于是有一个突出的问题,是横向拼接还是纵向拼接,所以concat 函数的关键参数是axis 。 函数的具体参数是: concat(objs,axis=0,join='outer',join_axes=None,ignore_index=False,keys=None,levels=None,names=None,...
  • 下面小编就为大家分享一篇python pandas dataframe 按列或者按行合并的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧 concat 与其说是连接,更准确的说是拼接。就是把两个表直接合在一起。...
  • DataFrame操作指南1、 查1.2 列元素操作1.3 排序1.4 抽样1.5 按条件筛选when / between2、 增、改2.1 新建数据2.2 新增数据列 withColumn2.3 过滤数据3、合并 join / union3.1 横向拼接rbind3.2 Join根据条件3.2 求...
  • 不同长度列表横向合并DataFrame import pandas as pd a = [1,2,3] b = [4,5] c = ['a','b','c','d'] df = pd.concat([pd.DataFrame(a),pd.DataFrame(b)],axis=1) # 若axis=1,则纵向合并 print(df) 0 0 0 0 ...
  • pandas学习03--数据合并之纵向横向

    千次阅读 2016-08-11 10:16:09
    假设有一个10行2列都是1的数据 df1=pd.DataFrame(np.ones((10,2))) 假设还有一个8行2列都是0的数据 df2=pd.DataFrame(np.zeros((8,2))) ...横向合并 pd.concat([df1,df2],axis=1),不全是的数据默认NaN
  • 最近开始接触pyspark,其中DataFrame的应用很重要也很简便。因此,这里记录一下自己的学习笔记。...四、合并 join / union 4.1 横向拼接union 4.2 Join根据条件 4.3求并集、交集 4.4分割:行转...
  • 2、合并操作之merge,一次性只能操作两个dataframe,支持左连接、右连接、外链接、内连接,默认为内连接。支持指定连接使用的key。示例: 3、合并操作之concat,轴向连接,通过axis参数指定连接方向,默认axis=0...
  • 6.Pandas的数据合并

    2020-06-05 03:26:09
    文章目录0 引言1 纵向合并2 横向合并 0 引言 Pandas对多个表格可以进行合并操作,主要分为纵向合并和横向合并。 1 纵向合并 import pandas as pd import numpy as np 生成多个DataFrame表格 df1 = pd.DataFrame(np....
  • 合并两个dataframe横向纵向均可以 method1:concatenating import pandas as pd import numpy as np df1 = pd.DataFrame(np.ones((3,4))*0,columns=['a','b','c','d']) df2 = pd.DataFrame(np.ones((3,4))*1,...
  • 横向合并两个数据框,使用merge()函数。在多数情况下,两个数据框是通过一个或多个共有变量进行联结的(即一种内联结,inner join )。 total <- merge(dataframeA,dataframeB,by = "ID") 将dataframeA和...

空空如也

空空如也

1 2 3
收藏数 56
精华内容 22
关键字:

dataframe横向合并