Rumah >pembangunan bahagian belakang >Tutorial Python >Bagaimana untuk menggabungkan dan menyertai data menggunakan DataFrame dalam Python?

Bagaimana untuk menggabungkan dan menyertai data menggunakan DataFrame dalam Python?

王林
王林ke hadapan
2023-05-07 21:04:173435semak imbas

    gabung()

    1 Gabungan konvensional

    ①Kaedah 1

    Nyatakan lajur rujukan , berdasarkan lajur ini, gabungkan lajur lain.

    import pandas as pd
    
    df1 = pd.DataFrame({'id': ['001', '002', '003'],
                        'num1': [120, 101, 104],
                        'num2': [110, 102, 121],
                        'num3': [105, 120, 113]})
    df2 = pd.DataFrame({'id': ['001', '002', '003'],
                        'num4': [80, 86, 79]})
    print(df1)
    print("=======================================")
    print(df2)
    print("=======================================")
    df_merge = pd.merge(df1, df2, on='id')
    print(df_merge)

    Bagaimana untuk menggabungkan dan menyertai data menggunakan DataFrame dalam Python?

    ②Kaedah 2

    Untuk mencapai gabungan ini, anda juga boleh bergabung mengikut indeks, iaitu, gunakan lajur indeks sebagai asas. Hanya tetapkan indeks_kiri dan indeks_kanan kepada Benar
    . (Kedua-dua left_index dan right_index lalai kepada False. left_index bermaksud jadual kiri adalah berdasarkan indeks data jadual kiri dan right_index bermaksud jadual kanan adalah berdasarkan indeks data jadual kanan.)

    import pandas as pd
    
    df1 = pd.DataFrame({'id': ['001', '002', '003'],
                        'num1': [120, 101, 104],
                        'num2': [110, 102, 121],
                        'num3': [105, 120, 113]})
    df2 = pd.DataFrame({'id': ['001', '002', '003'],
                        'num4': [80, 86, 79]})
    print(df1)
    print("=======================================")
    print(df2)
    print("=======================================")
    
    df_merge = pd.merge(df1, df2, left_index=True, right_index=True)
    print(df_merge)

    Bagaimana untuk menggabungkan dan menyertai data menggunakan DataFrame dalam Python?

    Berbanding dengan kaedah ①, perbezaannya ialah, seperti yang ditunjukkan dalam rajah, terdapat lajur pendua dalam data yang digabungkan mengikut kaedah ②.

    Parameter penting

    pd.merge(right,how=‘inner’, on=“None”, left_on=“None”, right_on=“None”, left_index= False, right_index=False )

    参数 描述
    left 左表,合并对象,DataFrame或Series
    right 右表,合并对象,DataFrame或Series
    how 合并方式,可以是left(左合并), right(右合并), outer(外合并), inner(内合并)
    on 基准列 的列名
    left_on 左表基准列列名
    right_on 右表基准列列名
    left_index 左列是否以index为基准,默认False,否
    right_index 右列是否以index为基准,默认False,否

    Antaranya, indeks_kiri dan indeks_kanan tidak boleh dinyatakan pada masa yang sama seperti pada.

    Kaedah gabung kiri kanan luar dalam

    Sediakan data‘

    Sediakan set data baharu:

    import pandas as pd
    
    df1 = pd.DataFrame({'id': ['001', '002', '003'],
                        'num1': [120, 101, 104],
                        'num2': [110, 102, 121],
                        'num3': [105, 120, 113]})
    df2 = pd.DataFrame({'id': ['001', '004', '003'],
                        'num4': [80, 86, 79]})
    print(df1)
    print("=======================================")
    print(df2)
    print("=======================================")

    Bagaimana untuk menggabungkan dan menyertai data menggunakan DataFrame dalam Python?

    dalaman (lalai)

    Menggunakan persilangan kunci daripada kedua-dua set data

    rreee

    Bagaimana untuk menggabungkan dan menyertai data menggunakan DataFrame dalam Python?

    luar

    Kesatuan menggunakan kunci daripada kedua-dua set data

    df_merge = pd.merge(df1, df2, on='id')
    print(df_merge)

    Bagaimana untuk menggabungkan dan menyertai data menggunakan DataFrame dalam Python?

    kiri

    Gunakan kekunci daripada set data kiri

    df_merge = pd.merge(df1, df2, on='id', how="outer")
    print(df_merge)

    Bagaimana untuk menggabungkan dan menyertai data menggunakan DataFrame dalam Python?

    kanan

    Gunakan kekunci daripada set data sebelah kanan

    df_merge = pd.merge(df1, df2, on='id', how='left')
    print(df_merge)

    Bagaimana untuk menggabungkan dan menyertai data menggunakan DataFrame dalam Python?

    2. Gabungan banyak-dengan-satu

    df_merge = pd.merge(df1, df2, on='id', how='right')
    print(df_merge)

    Bagaimana untuk menggabungkan dan menyertai data menggunakan DataFrame dalam Python?

    Seperti yang ditunjukkan dalam rajah, terdapat data id1 pendua dalam df2.

    Gabung

    import pandas as pd
    
    df1 = pd.DataFrame({'id': ['001', '002', '003'],
                        'num1': [120, 101, 104],
                        'num2': [110, 102, 121],
                        'num3': [105, 120, 113]})
    df2 = pd.DataFrame({'id': ['001', '001', '003'],
                        'num4': [80, 86, 79]})
    print(df1)
    print("=======================================")
    print(df2)
    print("=======================================")

    Hasil gabungan adalah seperti yang ditunjukkan dalam rajah:

    Bagaimana untuk menggabungkan dan menyertai data menggunakan DataFrame dalam Python?

    Masih menggunakan kaedah Inner lalai, menggunakan data daripada kedua-dua set data Persilangan kekunci. Dan baris dengan kunci pendua akan ditunjukkan sebagai berbilang baris dalam hasil gabungan.

    3. Gabungan banyak-ke-banyak

    Sebagai contoh, terdapat berbilang baris dengan ID pendua dalam Carta 1 dan Jadual 2.

    df_merge = pd.merge(df1, df2, on='id')
    print(df_merge)

    Bagaimana untuk menggabungkan dan menyertai data menggunakan DataFrame dalam Python?

    import pandas as pd
    df1 = pd.DataFrame({'id': ['001', '002', '002', '002', '003'],
                        'num1': [120, 101, 104, 114, 123],
                        'num2': [110, 102, 121, 113, 126],
                        'num3': [105, 120, 113, 124, 128]})
    df2 = pd.DataFrame({'id': ['001', '001', '002', '003', '001'],
                        'num4': [80, 86, 79, 88, 93]})
    print(df1)
    print("=======================================")
    print(df2)
    print("=======================================")

    Bagaimana untuk menggabungkan dan menyertai data menggunakan DataFrame dalam Python?

    concat()

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

    参数 描述
    objs Series,DataFrame或Panel对象的序列或映射
    axis 默认为0,表示列。如果为1则表示行。
    join 默认为"outer",也可以为"inner"
    ignore_index 默认为False,表示保留索引(不忽略)。设为True则表示忽略索引。

    其他重要参数通过实例说明。

    1.相同字段的表首位相连

    首先准备三组DataFrame数据:

    import pandas as pd
    df1 = pd.DataFrame({'id': ['001', '002', '003'],
                        'num1': [120, 114, 123],
                        'num2': [110, 102, 121],
                        'num3': [113, 124, 128]})
    df2 = pd.DataFrame({'id': ['004', '005'],
                        'num1': [120, 101],
                        'num2': [113, 126],
                        'num3': [105, 128]})
    df3 = pd.DataFrame({'id': ['007', '008', '009'],
                        'num1': [120, 101, 125],
                        'num2': [113, 126, 163],
                        'num3': [105, 128, 114]})
    
    
    print(df1)
    print("=======================================")
    print(df2)
    print("=======================================")
    print(df3)

    Bagaimana untuk menggabungkan dan menyertai data menggunakan DataFrame dalam Python?

    合并

    dfs = [df1, df2, df3]
    result = pd.concat(dfs)
    print(result)

    Bagaimana untuk menggabungkan dan menyertai data menggunakan DataFrame dalam Python?

    如果想要在合并后,标记一下数据都来自于哪张表或者数据的某类别,则也可以给concat加上 参数keys

    result = pd.concat(dfs, keys=['table1', 'table2', 'table3'])
    print(result)

    Bagaimana untuk menggabungkan dan menyertai data menggunakan DataFrame dalam Python?

    此时,添加的keys与原来的index组成元组,共同成为新的index。

    print(result.index)

    Bagaimana untuk menggabungkan dan menyertai data menggunakan DataFrame dalam Python?

    2.横向表合并(行对齐)

    准备两组DataFrame数据:

    import pandas as pd
    df1 = pd.DataFrame({'num1': [120, 114, 123],
                        'num2': [110, 102, 121],
                        'num3': [113, 124, 128]}, index=['001', '002', '003'])
    df2 = pd.DataFrame({'num3': [117, 120, 101, 126],
                        'num5': [113, 125, 126, 133],
                        'num6': [105, 130, 128, 128]}, index=['002', '003', '004', '005'])
    
    print(df1)
    print("=======================================")
    print(df2)

    Bagaimana untuk menggabungkan dan menyertai data menggunakan DataFrame dalam Python?

    当axis为默认值0时:

    result = pd.concat([df1, df2])
    print(result)

    Bagaimana untuk menggabungkan dan menyertai data menggunakan DataFrame dalam Python?

    横向合并需要将axis设置为1

    result = pd.concat([df1, df2], axis=1)
    print(result)

    Bagaimana untuk menggabungkan dan menyertai data menggunakan DataFrame dalam Python?

    对比以上输出差异。

    • axis=0时,即默认纵向合并时,如果出现重复的行,则会同时体现在结果中

    • axis=1时,即横向合并时,如果出现重复的列,则会同时体现在结果中。

    3.交叉合并

    result = pd.concat([df1, df2], axis=1, join='inner')
    print(result)

    Bagaimana untuk menggabungkan dan menyertai data menggunakan DataFrame dalam Python?

    Atas ialah kandungan terperinci Bagaimana untuk menggabungkan dan menyertai data menggunakan DataFrame dalam Python?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

    Kenyataan:
    Artikel ini dikembalikan pada:yisu.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam