


Bagaimana untuk menggabungkan dan menyertai data menggunakan DataFrame dalam Python?
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)
②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)
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("=======================================")
dalaman (lalai)
Menggunakan persilangan kunci daripada kedua-dua set data
rreeeluar
Kesatuan menggunakan kunci daripada kedua-dua set data
df_merge = pd.merge(df1, df2, on='id') print(df_merge)
kiri
Gunakan kekunci daripada set data kiri
df_merge = pd.merge(df1, df2, on='id', how="outer") print(df_merge)
kanan
Gunakan kekunci daripada set data sebelah kanan
df_merge = pd.merge(df1, df2, on='id', how='left') print(df_merge)
2. Gabungan banyak-dengan-satu
df_merge = pd.merge(df1, df2, on='id', how='right') print(df_merge)
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:
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)
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("=======================================")
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)
合并
dfs = [df1, df2, df3] result = pd.concat(dfs) print(result)
如果想要在合并后,标记一下数据都来自于哪张表或者数据的某类别,则也可以给concat加上 参数keys 。
result = pd.concat(dfs, keys=['table1', 'table2', 'table3']) print(result)
此时,添加的keys与原来的index组成元组,共同成为新的index。
print(result.index)
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)
当axis为默认值0时:
result = pd.concat([df1, df2]) print(result)
横向合并需要将axis设置为1 :
result = pd.concat([df1, df2], axis=1) print(result)
对比以上输出差异。
axis=0时,即默认纵向合并时,如果出现重复的行,则会同时体现在结果中
axis=1时,即横向合并时,如果出现重复的列,则会同时体现在结果中。
3.交叉合并
result = pd.concat([df1, df2], axis=1, join='inner') print(result)
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!

Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

AI Hentai Generator
Menjana ai hentai secara percuma.

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas

Penyelesaian kepada Isu Kebenaran Semasa Melihat Versi Python di Terminal Linux Apabila anda cuba melihat versi Python di Terminal Linux, masukkan Python ...

Apabila menggunakan Perpustakaan Pandas Python, bagaimana untuk menyalin seluruh lajur antara dua data data dengan struktur yang berbeza adalah masalah biasa. Katakan kita mempunyai dua DAT ...

Bermula dengan Python: Lukisan Grafik Hourglass dan Pengesahan Input Artikel ini akan menyelesaikan masalah definisi berubah -ubah yang dihadapi oleh pemula python dalam program lukisan grafik Hourglass. Kod ...

Pilihan Perpustakaan Pembangunan Aplikasi Desktop Python Python Banyak pemaju Python ingin membangunkan aplikasi desktop yang boleh dijalankan pada kedua-dua sistem Windows dan Linux ...

Ramai pemaju bergantung kepada PYPI (PythonPackageIndex) ...

Penukaran dan Statistik Data: Pemprosesan yang cekap bagi set data besar Artikel ini akan memperkenalkan secara terperinci bagaimana untuk menukar senarai data yang mengandungi maklumat produk kepada yang lain yang mengandungi ...

Bagaimana untuk mengendalikan imej resolusi tinggi di Python untuk mencari kawasan putih? Memproses gambar resolusi tinggi 9000x7000 piksel, bagaimana untuk mencari dua gambar dengan tepat ...

Apabila menggunakan Python untuk menyambung ke pelayan FTP, anda mungkin menghadapi masalah pengekodan apabila mendapatkan fail dalam direktori yang ditentukan dan memuat turunnya, terutamanya teks pada pelayan FTP ...
