Pandas中的连接函数汇总

如有错误欢迎指正~

在数据分析的过程中数据的重构是非常重要的,本篇文章将详细讲解pandas中四个重要的连接函数:concat(), merge(), join(), append()


import pandas as pd
import numpy as np
  • 沿特定轴(axis)连接对象,也可以在连接轴上添加层级索引(index)

1. 参数详解

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

2. 举例说明

首先建立三个数据集

df1 = pd.DataFrame([['a', 1], ['b', 2]], columns = ['letter', 'number'])
df2 = pd.DataFrame([['c', 3], ['d', 4]], columns = ['letter', 'number'])
df3 = pd.DataFrame([['c', 3, 'cat'], ['d', 4, 'dog']], columns = ['letter', 'number', 'animal'])
df1
  letter  number
0      a       1
1      b       2

df2
  letter  number
0      c       3
1      d       4

df3
  letter  number animal
0      c       3    cat
1      d       4    dog

将df1和df2按行连接,并构建多层次索引

pd.concat([df1, df2], keys = ['x', 'y'])
        letter  number
x   0   a   1
    1   b   2
y   0   c   3
    1   d   4

将df1和df3按行连接,默认为并集(联合)有额外的列值用NaN填充

pd.concat([df1, df3])
    letter  number  animal
0   a   1   NaN
1   b   2   NaN
0   c   3   cat
1   d   4   dog

将df1和df3按行连接,并重构索引

pd.concat([df1, df3], ignore_index = True, join = 'inner')
    letter  number
0   a   1
1   b   2
2   c   3
3   d   4

若要按列连接添加 ‘axis = 1’;
总的来说,concat()函数自身可以实现按行按列连接,也可以添加多层次索引

  • 按行合并
  • 将添加的行追加到原数据的末尾,并返回一个新对象。
  • 新添加的行新出现的列(原数据中没有的列)将作为新列添加。

1. 参数详解

append()中的参数较少,与concat()中参数有部分重合

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

2. 举例说明

仍然用前面建立的三个数据集来举例

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

    letter  number  animal
0   a   1   NaN
1   b   2   NaN
2   c   3   NaN
3   d   4   NaN
4   c   3   cat
5   d   4   dog
  • 按列快速合并
  • 通过传入一个列表,可以通过索引一次高效地连接多个数据对象

1. 参数详解

join()对连接的索引进行较为详细的划分

df.join(
    other,
    on=None,
    how='left',

    lsuffix='',
    rsuffix='',
    sort=False
    )

2. 举例说明

df1.join(df2, lsuffix = '_1', rsuffix = '_2')

    letter_1    number_1    letter_2    number_2
0       a           1           c           3
1       b           2           d           4

1. 参数详解

pd.merge(
    left,
    right,
    how: str = 'inner',
    on=None,
    left_on=None,
    right_on=None,
    left_index: bool = False,
    right_index: bool = False,
    sort: bool = False,
    suffixes=('_x', '_y'),
    copy: bool = True,
    indicator: bool = False,
) -> 'DataFrame'

2. 举例说明

pd.merge(left=df1, right=df3, left_index=True, right_index=True, suffixes=('_1', '_2'))

    letter_1    number_1    letter_2    number_2    animal
0       a           1           c           3       cat
1       b           2           d           4       dog
pd.merge(left=df1, right=df2, how='cross')
    letter_x    number_x    letter_y    number_y
0       a           1           c       3
1       a           1           d       4
2       b           2           c       3
3       b           2           d       4
  • concat 可以通过指定axis进行行列两个维度的连接
  • append 相当于concat(axis=0),只能进行行连接
  • join 相当于concat(axis=1),默认用index进行列合并
  • merge 相当于concat(axis=1) ,通过指定一个key进行列合并

Original: https://blog.csdn.net/Hour__/article/details/118682204
Author: Hour__
Title: Pandas中的连接函数汇总

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/679735/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球