zoukankan      html  css  js  c++  java
  • 4-Pandas数据预处理之数据合并与轴向连接(pd.concat()的详解)

      数据合并:由于数据可能是不同的格式,且来自不同的数据源,为了方便之后的处理与加工,需要将不同的数据转换成一个DataFrame。

      Numpy中的concatenate()、vstack()、hstack()可对数组进行拼接,可参考学习。

      Pandas提供了pd.concat()pd.merge()join()combine_first()等函数对Pandas数据对象进行合并。

    在本节中,仅对pd.concat()进行详细讲解。

    pd.concat()常用的参数
    参数 说明
    objs 需连接的对象的列表
    axis 轴向连接所沿的轴,默认为0
    ignore_index 默认False,当为True时表示不适用连接轴上的索引值,生成的轴标记为0...n-1
    keys 序列,默认为None。构建层次化索引,且该索引位于最外层
    join 值为'inner'或'outer'(默认'outer')。指定处理其他轴上的索引(并集或交集)
    join_axes 指定其他轴上的索引,不执行并集或交集运算

    (1)默认连接两个DataFrame对象(默认axis = 0,即上下连接)

    >>> import pandas as pd
    >>> df1 = pd.DataFrame({'姓名':['钱某','段某'],'年龄':[20,24]},index=[2,3])
    >>> df2 = pd.DataFrame({'姓名':['钱某','段某'],'年龄':[20,24]},index=[2,3])
    >>> df1
       姓名  年龄
    2  钱某  20
    3  段某  24
    >>> df2
       姓名  年龄
    2  钱某  20
    3  段某  24
    
    #连接两个对象
    >>> pd.concat([df1,df2])
       姓名  年龄
    2  钱某  20
    3  段某  24
    2  钱某  20
    3  段某  24

    (2)左右连接两个DataFrame对象

    >>> df1 = pd.DataFrame({'年龄':[22,26],'籍贯':['北京','河北']},index=['张某','李某'])
    >>> df2 = pd.DataFrame({'身高':[175,180],'体重':[70,85]},index=['张某','李某'])
    >>> df1
        年龄  籍贯
    张某  22  北京
    李某  26  河北
    >>> df2
         身高  体重
    张某  175  70
    李某  180  85
    
    #左右连接
    >>> pd.concat([df1,df2],axis=1)
        年龄  籍贯   身高  体重
    张某  22  北京  175  70
    李某  26  河北  180  85

    (3)验证ignore_index参数,即将连接后的列名转化为0...n-1

    >>> pd.concat([df1,df2],axis=1,ignore_index=True)
         0   1    2   3
    张某  22  北京  175  70
    李某  26  河北  180  85
    

     (4)验证keys参数,即构建层次化索引

    >>> pd.concat([df1,df2],axis=1,keys=['df1','df2'])
       df1      df2
        年龄  籍贯   身高  体重
    张某  22  北京  175  70
    李某  26  河北  180  85
    

    (5)验证join参数,默认 join = 'outer' ,取并集,不会造成信息的缺失

    >>> df3 = pd.DataFrame({'身高':[175,183],'体重':[70,87]},index=['张某','钱某'])
    >>> df3
         身高  体重
    张某  175  70
    钱某  183  87
    
    #取并集
    >>> pd.concat([df1,df3],axis=1)
          年龄   籍贯     身高    体重
    张某  22.0   北京  175.0  70.0
    李某  26.0   河北    NaN   NaN
    钱某   NaN  NaN  183.0  87.0
    
    #取交集
    >>> pd.concat([df1,df3],axis=1,join='inner')
        年龄  籍贯   身高  体重
    张某  22  北京  175  70

    (6)验证join_axes参数,若只想重用原始DataFrame中的索引,则项 join_axes 传入一个索引对象列表

    >>> pd.concat([df1,df3],axis=1)
          年龄   籍贯     身高    体重
    张某  22.0   北京  175.0  70.0
    李某  26.0   河北    NaN   NaN
    钱某   NaN  NaN  183.0  87.0
    
    >>> pd.concat([df1,df3],axis=1,join_axes=[df1.index])
        年龄  籍贯     身高    体重
    张某  22  北京  175.0  70.0
    李某  26  河北    NaN   NaN
  • 相关阅读:
    FlowNet2.0论文笔记
    LeetCode NO477.汉明距离总和
    自然语言的分词方法之N-gram语言模型
    C++函数模板及其实例化和具体化
    Vue2源码解读(5)
    Vue2源码解读(4)
    Vue2源码解读(3)
    Vue2源码解读(2)
    Vue2源码解读(1)
    vue的双向绑定原理及实现
  • 原文地址:https://www.cnblogs.com/Cheryol/p/13395518.html
Copyright © 2011-2022 走看看