溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

Python中Pandas數(shù)據(jù)合并方法有哪些

發(fā)布時間:2021-11-26 10:26:47 來源:億速云 閱讀:645 作者:iii 欄目:開發(fā)技術(shù)

這篇文章主要介紹“Python中Pandas數(shù)據(jù)合并方法有哪些”,在日常操作中,相信很多人在Python中Pandas數(shù)據(jù)合并方法有哪些問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”Python中Pandas數(shù)據(jù)合并方法有哪些”的疑惑有所幫助!接下來,請跟著小編一起來學習吧!

1.concat()

concat() 可用于兩個及多個 DataFrame 間行/列方向進行內(nèi)聯(lián)或外聯(lián)拼接操作,默認對行(沿 y 軸)取并集。

使用方式

pd.concat(
    objs: Union[Iterable[~FrameOrSeries], Mapping[Union[Hashable, NoneType], ~FrameOrSeries]],
    axis=0,
    join='outer',
    ignore_index: bool = False,
    keys=None,
    levels=None,
    names=None,
    verify_integrity: bool = False,
    sort: bool = False,
    copy: bool = True,
)

主要參數(shù)

  • objs:一個序列或是Series,DataFrame對象的映射。

  • axis:連接的軸,0(‘index',行),1(‘columns',列),默認為0。

  • join:連接方式 ,inner(交集), outer(并集),默認為outer。

  • ignore_index:是否重置串聯(lián)軸的索引值。如果為True,則重置索引為0,…, n - 1。

  • keys:創(chuàng)建層次化索引??梢允侨我庵档牧斜砘驍?shù)組、元組數(shù)組、數(shù)組列表(如果將levels設(shè)置成多級數(shù)組的話)

  • names:生成的分層索引中級別的名稱。

示例

創(chuàng)建兩個 DataFrame。

df1 = pd.DataFrame(
          {'char': ['a', 'b'],
           'num': [1, 2]})
df2 = pd.DataFrame(
          {'char': ['b', 'c'],
           'num': [3, 4]})

Python中Pandas數(shù)據(jù)合并方法有哪些

concat() 默認會對行方向進行拼接操作,連接方式 outer。

pd.concat([d1, d2])

Python中Pandas數(shù)據(jù)合并方法有哪些

清除現(xiàn)有索引并重置索引。

pd.concat(
    [d1, d2],
    ignore_index=True)

Python中Pandas數(shù)據(jù)合并方法有哪些

通過 keys 參數(shù)在數(shù)據(jù)的最外層添加分層索引。

pd.concat(
    [d1, d2],
    keys=['d1', 'd2'])

Python中Pandas數(shù)據(jù)合并方法有哪些

指定 names 參數(shù)來標記創(chuàng)建的索引鍵。

pd.concat(
    [d1, d1],
    keys=['d1', 'd2'],
    names=['DF Name', 'Row ID'])

Python中Pandas數(shù)據(jù)合并方法有哪些

將兩個 DataFrame 與重疊的列進行組合并返回所有內(nèi)容。 交集外的列填充 NaN

df3 = pd.DataFrame(
          {'char': ['b', 'c'],
          'float': [3.0, 4.0]})
pd.concat([df1, df3])

Python中Pandas數(shù)據(jù)合并方法有哪些

將兩個 DataFrame 與重疊的列進行組合,只返回重疊列的內(nèi)容。

pd.concat(
    [df1, df3],
    join="inner")

Python中Pandas數(shù)據(jù)合并方法有哪些

指定 axis=1 沿 x 軸水平組合 DataFrame 對象。

df4 = pd.DataFrame(
          {'char': ['b', 'c', 'd'],
           'num': [3, 4, 5]},
           index=range(1, 4))
pd.concat([df1, df4], axis=1)

Python中Pandas數(shù)據(jù)合并方法有哪些

2.merge()

merge() 只能用于兩個 DataFrame 間列方向進行內(nèi)聯(lián)或外聯(lián)合并操作,默認列合并(沿 x 軸),取交集(即:以兩個 DataFrame 列名的交集作為連接鍵)

使用方式

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,
    validate=None,
)

參數(shù)

  • left:DataFrame

  • right:DataFrame 或者帶有 name 的Series

  • how:{‘left', ‘right', ‘outer', ‘inner'}, 默認為 ‘inner',連接的方式

  • on:用于連接的列索引名稱,必須同時存在于左、右兩個DataFrame中,默認是以兩個DataFrame列名的交集作為連接鍵。

  • left_on:左側(cè)DataFrame中用于連接鍵的列名,這個參數(shù)在左右列名不同但代表的含義相同時非常有用;

  • right_on:右側(cè)DataFrame中用于連接鍵的列名

  • left_index:默認為False,不使用左側(cè)DataFrame中的行索引作為連接鍵(但是這種情況下最好用JOIN)

  • right_index:默認為False,不使用右側(cè)DataFrame中的行索引作為連接鍵( 但是這種情況下最好用JOIN)

  • sort:默認為False,將合并的數(shù)據(jù)進行排序,設(shè)置為False可以提高性能

  • suffixes:字符串值組成的元組,用于指定當左右DataFrame存在相同列名時在列名后面附加的后綴名稱,默認為('_x', ‘_y')

  • copy:默認為True,總是將數(shù)據(jù)復(fù)制到數(shù)據(jù)結(jié)構(gòu)中,設(shè)置為False可以提高性能

  • indicator:顯示合并數(shù)據(jù)中數(shù)據(jù)的來源情況

  • validate:{“one_to_one” or “1:1”, “one_to_many” or “1:m”, “many_to_one” or “m:1”, “many_to_many” or “m:m”}如果指定,則檢查合并是否為指定類型。

示例

創(chuàng)建兩個DataFrame

df1 = pd.DataFrame(
          {'name': ['A1', 'B1', 'C1'],
           'grade': [60, 70, 80]})
df2 = pd.DataFrame(
          {'name': ['B1', 'C1', 'D1'],
           'grade': [70, 80, 100]})

Python中Pandas數(shù)據(jù)合并方法有哪些

merge() 默認情況下,會根據(jù)兩個 DataFrame 中同時存在的列進行合并,合并方法采用取交集的方式。

df1.merge(df2)

Python中Pandas數(shù)據(jù)合并方法有哪些

指定合并的方式為 outer,取并集。

df1.merge(df2, how='outer')

Python中Pandas數(shù)據(jù)合并方法有哪些

下面再創(chuàng)建兩個 DataFrame。

df1 = pd.DataFrame(
      {'name1': ['A1', 'B1', 'B1', 'C1'],
       'grade': [60, 70, 80, 90]})
df2 = pd.DataFrame(
      {'name2': ['B1', 'C1', 'D1', 'E1'],
       'grade': [70, 80, 90, 100]})

Python中Pandas數(shù)據(jù)合并方法有哪些

根據(jù) name1name2 列合并 df1df2grade 列附加了默認后綴 _x_y。

df1.merge(
    df2,
    left_on='name1',
    right_on='name2')

Python中Pandas數(shù)據(jù)合并方法有哪些

合并 df1df2,并將指定的左右后綴附加到重疊列末尾。

df1.merge(
    df2,
    left_on='name1',
    right_on='name2',
    suffixes=('_1', '_2'))

Python中Pandas數(shù)據(jù)合并方法有哪些

3.append()

append() 可用于兩個及多個 DataFrame 間行方向(沿 y 軸)的拼接操作,默認取并集。

使用方式

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

參數(shù)

  • other : 指定要添加的數(shù)據(jù)。DataFrame 或 Series 對象,或這些對象的列表

  • ignore_index: 是否忽略索引,如果為 True,軸將被重置為 0, 1, …, n - 1。默認為False

  • verify_integrity:如果為 True,則在創(chuàng)建具有重復(fù)項的索引時引發(fā) ValueError。默認為 False

  • sort : 如果 df1 和 other 的列未對齊,則對列進行排序。默認為 False。

示例

創(chuàng)建兩個 DataFrame。

df1 = pd.DataFrame(
          [[1, 2], [3, 4]],
          columns=list('AB'))
df2 = pd.DataFrame(
          [[5, 6], [7, 8]],
          columns=list('BC'))

Python中Pandas數(shù)據(jù)合并方法有哪些

append() 在默認情況下會沿y軸垂直拼接兩個 DataFramedf1,df2 交集外的列填充 NaN。

df1.append(df2)

Python中Pandas數(shù)據(jù)合并方法有哪些

ignore_index 設(shè)置為 True,來達到重置軸的索引。

df1.append(df2, ignore_index=True)

Python中Pandas數(shù)據(jù)合并方法有哪些

4.join()

join() 用于兩個及多個 DataFrame 間列方向(沿 x 軸)的拼接操作,默認左拼接。

使用方式

df1.join(
    other,
    on=None,
    how='left',
    lsuffix='',
    rsuffix='',
    sort=False)
  • other:指定要添加的數(shù)據(jù)。DataFrame 或 Series 對象,或這些對象的列表

  • on:連接的列,默認使用索引連接

  • how:{‘left', ‘right', ‘outer', ‘inner'}, 默認為 ‘left',連接的方式

  • lsuffix:默認為空字符串,表示df1中重復(fù)列的后綴

  • rsuffix:other中重復(fù)列的后綴

  • sort:按照字典順序?qū)Y(jié)果在連接鍵上排序。如果為False,連接鍵的順序取決于連接類型(關(guān)鍵字)。

示例

創(chuàng)建兩個 DataFrame

df1 = pd.DataFrame(
          {'A': ['A0', 'A1', 'A2', 'A3', 'A4'],
          'val': ['V0', 'V1', 'V2', 'V3', 'V4']})
df2 = pd.DataFrame(
          {'B': ['B3', 'B4', 'B5'],
          'val': ['V3', 'V4', 'V5']})

Python中Pandas數(shù)據(jù)合并方法有哪些

如果我們想使用 val 列進行連接,我們需要將 val 設(shè)置為 df1df2 中的索引。

df1.set_index('val').join(
    df2.set_index('val'))

Python中Pandas數(shù)據(jù)合并方法有哪些

使用 val 列連接的另一個方法是指定 on 參數(shù)。 df1.join 只能使用 df2 的索引,但可以使用 df1 中的任何列。所以可以只將 df2 中的 val 列轉(zhuǎn)為索引,并通過 on 參數(shù)指定 df1 的連接列為 val。

df1.join(
    df2.set_index('val'),
    on='val')

Python中Pandas數(shù)據(jù)合并方法有哪些

使用外連接的方式連接 df1df2

df1.join(
    df2.set_index('val'),
    on='val',
    how='outer')

Python中Pandas數(shù)據(jù)合并方法有哪些

到此,關(guān)于“Python中Pandas數(shù)據(jù)合并方法有哪些”的學習就結(jié)束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續(xù)學習更多相關(guān)知識,請繼續(xù)關(guān)注億速云網(wǎng)站,小編會繼續(xù)努力為大家?guī)砀鄬嵱玫奈恼拢?/p>

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI