Python luar bergabung dengan dua kamus

panda menyediakan berbagai fasilitas untuk dengan mudah menggabungkan objek Seri, DataFrame, dan Panel dengan berbagai jenis logika set untuk indeks dan fungsi aljabar relasional dalam kasus operasi tipe gabungan/gabungan

Menggabungkan objek

Fungsi

13 (di ruang nama panda utama) melakukan semua pekerjaan berat dalam melakukan operasi penggabungan sepanjang sumbu sambil melakukan logika set opsional (penyatuan atau perpotongan) dari indeks (jika ada) pada sumbu lainnya. Perhatikan bahwa saya mengatakan "jika ada" karena hanya ada satu kemungkinan sumbu rangkaian untuk Seri

Sebelum menyelami semua detail

_13 dan apa yang dapat dilakukannya, berikut adalah contoh sederhana

In [1]: df1 = pd.DataFrame({'A': ['A0', 'A1', 'A2', 'A3'],
   ...:                     'B': ['B0', 'B1', 'B2', 'B3'],
   ...:                     'C': ['C0', 'C1', 'C2', 'C3'],
   ...:                     'D': ['D0', 'D1', 'D2', 'D3']},
   ...:                     index=[0, 1, 2, 3])
   ...: 

In [2]: df2 = pd.DataFrame({'A': ['A4', 'A5', 'A6', 'A7'],
   ...:                     'B': ['B4', 'B5', 'B6', 'B7'],
   ...:                     'C': ['C4', 'C5', 'C6', 'C7'],
   ...:                     'D': ['D4', 'D5', 'D6', 'D7']},
   ...:                      index=[4, 5, 6, 7])
   ...: 

In [3]: df3 = pd.DataFrame({'A': ['A8', 'A9', 'A10', 'A11'],
   ...:                     'B': ['B8', 'B9', 'B10', 'B11'],
   ...:                     'C': ['C8', 'C9', 'C10', 'C11'],
   ...:                     'D': ['D8', 'D9', 'D10', 'D11']},
   ...:                     index=[8, 9, 10, 11])
   ...: 

In [4]: frames = [df1, df2, df3]

In [5]: result = pd.concat(frames)

Python luar bergabung dengan dua kamus

Seperti fungsi saudaranya pada ndarrays,

15, 
16 mengambil daftar atau dict objek yang diketik secara homogen dan menggabungkannya dengan beberapa penanganan yang dapat dikonfigurasi tentang "apa yang harus dilakukan dengan sumbu lain"

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

  • _17. urutan atau pemetaan objek Seri, DataFrame, atau Panel. Jika dict diteruskan, kunci yang diurutkan akan digunakan sebagai argumen kunci, kecuali jika diteruskan, dalam hal ini nilainya akan dipilih (lihat di bawah). Objek Tidak Ada apa pun akan dijatuhkan secara diam-diam kecuali jika semuanya Tidak ada dalam hal ini ValueError akan dimunculkan
  • _18. {0, 1,. }, standar 0. Sumbu untuk digabungkan bersama
  • _19. {'dalam', 'luar'}, default 'luar'. Cara menangani indeks pada sumbu lain. Luar untuk penyatuan dan bagian dalam untuk persimpangan
  • _20. boolean, default Salah. Jika Benar, jangan gunakan nilai indeks pada sumbu gabungan. Sumbu yang dihasilkan akan diberi label 0,. , n - 1. Ini berguna jika Anda menggabungkan objek di mana sumbu gabungan tidak memiliki informasi pengindeksan yang berarti. Perhatikan nilai indeks pada sumbu lainnya masih dihormati dalam gabungan
  • _21. daftar objek Indeks. Indeks khusus untuk digunakan untuk sumbu n - 1 lainnya alih-alih menjalankan logika set dalam/luar
  • _22. urutan, default Tidak ada. Bangun indeks hierarkis menggunakan kunci yang diteruskan sebagai level terluar. Jika beberapa level dilewati, harus berisi tupel
  • _23. daftar urutan, default Tidak ada. Level khusus (nilai unik) yang akan digunakan untuk membuat MultiIndex. Kalau tidak, mereka akan disimpulkan dari kunci
  • _24. daftar, default Tidak ada. Nama untuk level dalam indeks hierarki yang dihasilkan
  • _25. boolean, default Salah. Periksa apakah sumbu gabungan baru berisi duplikat. Ini bisa sangat mahal dibandingkan dengan penggabungan data aktual
  • _26. boolean, default Benar. Jika Salah, jangan salin data yang tidak perlu

Tanpa sedikit konteks dan contoh, banyak dari argumen ini tidak masuk akal. Mari kita ambil contoh di atas. Misalkan kita ingin mengaitkan kunci tertentu dengan masing-masing bagian dari DataFrame yang dicincang. Kita dapat melakukannya dengan menggunakan argumen

22

In [6]: result = pd.concat(frames, keys=['x', 'y', 'z'])

Python luar bergabung dengan dua kamus

Seperti yang Anda lihat (jika Anda telah membaca dokumentasi lainnya), indeks objek yang dihasilkan memiliki a. Ini berarti kita sekarang dapat melakukan hal-hal seperti memilih setiap potongan dengan kunci

In [7]: result.loc['y']
Out[7]: 
    A   B   C   D
4  A4  B4  C4  D4
5  A5  B5  C5  D5
6  A6  B6  C6  D6
7  A7  B7  C7  D7

Tidak sulit untuk melihat bagaimana ini bisa sangat berguna. Lebih detail tentang fungsi ini di bawah ini

Catatan

Namun perlu dicatat, bahwa

_13 (dan karena itu 
29) membuat salinan lengkap dari data, dan bahwa terus-menerus menggunakan kembali fungsi ini dapat menghasilkan kinerja yang signifikan. Jika Anda perlu menggunakan operasi pada beberapa kumpulan data, gunakan pemahaman daftar

frames = [ process_your_file(f) for f in files ]
result = pd.concat(frames)

Tetapkan logika pada sumbu lainnya

Saat merekatkan beberapa DataFrames (atau Panel atau. ), misalnya, Anda memiliki pilihan cara menangani sumbu lainnya (selain sumbu yang digabungkan). Ini dapat dilakukan dengan tiga cara

  • Ambil (diurutkan) serikat mereka semua,
    30. Ini adalah opsi default karena menghasilkan nol kehilangan informasi
  • Ambil persimpangan,
    _31
  • Gunakan indeks tertentu (dalam kasus DataFrame) atau indeks (dalam kasus Panel atau objek dimensi yang lebih tinggi di masa mendatang), i. e. argumen
    _21

Berikut adalah contoh dari masing-masing metode tersebut. Pertama, perilaku default

_30

In [8]: df4 = pd.DataFrame({'B': ['B2', 'B3', 'B6', 'B7'],
   ...:                  'D': ['D2', 'D3', 'D6', 'D7'],
   ...:                  'F': ['F2', 'F3', 'F6', 'F7']},
   ...:                 index=[2, 3, 6, 7])
   ...: 

In [9]: result = pd.concat([df1, df4], axis=1)

Python luar bergabung dengan dua kamus

Perhatikan bahwa indeks baris telah digabungkan dan disortir. Ini adalah hal yang sama dengan

_31

In [10]: result = pd.concat([df1, df4], axis=1, join='inner')

Python luar bergabung dengan dua kamus

Terakhir, misalkan kita hanya ingin menggunakan kembali indeks yang tepat dari DataFrame asli

_1

Python luar bergabung dengan dua kamus

Penggabungan menggunakan _29

Pintasan yang berguna untuk

13 adalah 
29 metode contoh pada Seri dan DataFrame. Metode ini sebenarnya sudah ada sebelum 
_13. Mereka menggabungkan sepanjang 
_39, yaitu index

_3

Python luar bergabung dengan dua kamus

Dalam kasus DataFrame, indeks harus dipisahkan tetapi kolom tidak perlu

5

Python luar bergabung dengan dua kamus

_29 mungkin memerlukan banyak objek untuk digabungkan

_7

Python luar bergabung dengan dua kamus

Catatan

Tidak seperti daftar. tambahkan metode, yang menambahkan ke daftar asli dan tidak mengembalikan apa pun,

29 di sini tidak mengubah 
42 dan mengembalikan salinannya dengan 
43 ditambahkan

Mengabaikan indeks pada sumbu gabungan

Untuk DataFrames yang tidak memiliki indeks yang berarti, Anda mungkin ingin menambahkannya dan mengabaikan fakta bahwa mereka mungkin memiliki indeks yang tumpang tindih

Untuk melakukan ini, gunakan argumen

20

_9

Python luar bergabung dengan dua kamus

Ini juga merupakan argumen yang valid untuk

45

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

Python luar bergabung dengan dua kamus

Menggabungkan dengan campuran ndims

Anda dapat menggabungkan campuran Seri dan DataFrames. Seri akan diubah menjadi DataFrames dengan nama kolom sebagai nama Seri

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

Python luar bergabung dengan dua kamus

Jika Seri tanpa nama dilewatkan, mereka akan diberi nomor secara berurutan

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

Python luar bergabung dengan dua kamus

Melewati

_46 akan menghapus semua referensi nama

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

Python luar bergabung dengan dua kamus

Lebih menggabungkan dengan kunci grup

Penggunaan argumen

_22 yang cukup umum adalah mengganti nama kolom saat membuat DataFrame baru berdasarkan Seri yang ada. Perhatikan bagaimana perilaku default terdiri dari membiarkan DataFrame yang dihasilkan mewarisi nama Seri induk, jika ini ada

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

Melalui argumen

_22 kita dapat mengganti nama kolom yang ada

In [6]: result = pd.concat(frames, keys=['x', 'y', 'z'])
_0

Mari pertimbangkan sekarang variasi dari contoh pertama yang disajikan

In [6]: result = pd.concat(frames, keys=['x', 'y', 'z'])
_1

Python luar bergabung dengan dua kamus

Anda juga dapat meneruskan dict ke

_13 dalam hal ini kunci dict akan digunakan untuk argumen 
22 (kecuali kunci lain ditentukan)

In [6]: result = pd.concat(frames, keys=['x', 'y', 'z'])
_3

Python luar bergabung dengan dua kamus

In [6]: result = pd.concat(frames, keys=['x', 'y', 'z'])
_5

Python luar bergabung dengan dua kamus

MultiIndex yang dibuat memiliki level yang dibangun dari kunci yang diteruskan dan indeks dari potongan DataFrame

In [6]: result = pd.concat(frames, keys=['x', 'y', 'z'])
_7

Jika Anda ingin menentukan level lain (seperti yang kadang-kadang terjadi), Anda dapat melakukannya dengan menggunakan argumen

23

In [6]: result = pd.concat(frames, keys=['x', 'y', 'z'])
_8

Python luar bergabung dengan dua kamus

0

Ya, ini cukup esoteris, tetapi sebenarnya diperlukan untuk mengimplementasikan hal-hal seperti GroupBy di mana urutan variabel kategori bermakna

Menambahkan baris ke DataFrame

Meskipun tidak terlalu efisien (karena objek baru harus dibuat), Anda dapat menambahkan satu baris ke DataFrame dengan meneruskan Seri atau dict ke

29, yang mengembalikan DataFrame baru seperti di atas

_1

Python luar bergabung dengan dua kamus

Anda harus menggunakan

_20 dengan metode ini untuk menginstruksikan DataFrame membuang indeksnya. Jika Anda ingin mempertahankan indeks, Anda harus membuat DataFrame yang diindeks dengan tepat dan menambahkan atau menggabungkan objek tersebut

Anda juga dapat melewati daftar dicts atau Series

_3

Python luar bergabung dengan dua kamus

Penggabungan/penggabungan DataFrame bergaya basis data

pandas memiliki fitur lengkap, operasi penggabungan dalam memori berkinerja tinggi secara idiomatis sangat mirip dengan database relasional seperti SQL. Metode-metode ini bekerja jauh lebih baik (dalam beberapa kasus jauh lebih baik) daripada implementasi open source lainnya (seperti

54 di R). Alasannya adalah desain algoritmik yang cermat dan tata letak internal data di DataFrame

Lihat untuk beberapa strategi lanjutan

Pengguna yang terbiasa dengan SQL tetapi baru mengenal panda mungkin tertarik dengan a

panda menyediakan fungsi tunggal,

_55, sebagai titik masuk untuk semua operasi gabungan basis data standar antara objek DataFrame

5

  • _56. Objek DataFrame

  • _57. Objek DataFrame lainnya

  • _58. Kolom (nama) untuk bergabung. Harus ditemukan di objek DataFrame kiri dan kanan. Jika tidak lulus dan 
    _59 dan 
    60 adalah 
    61, perpotongan kolom di DataFrames akan dianggap sebagai kunci penghubung

  • _62. Kolom dari DataFrame kiri untuk digunakan sebagai kunci. Bisa berupa nama kolom atau array dengan panjang yang sama dengan panjang DataFrame

  • _63. Kolom dari DataFrame kanan untuk digunakan sebagai kunci. Bisa berupa nama kolom atau array dengan panjang yang sama dengan panjang DataFrame

  • _59. Jika 
    _65, gunakan indeks (label baris) dari DataFrame kiri sebagai kunci gabungannya. Dalam kasus DataFrame dengan MultiIndex (hierarkis), jumlah level harus sesuai dengan jumlah kunci gabungan dari DataFrame kanan

  • _60. Penggunaan yang sama seperti 
    _59 untuk DataFrame yang tepat

  • _68. Salah satu dari 
    _69, 
    70, 
    71, 
    72. Default ke 
    _73. Lihat di bawah untuk deskripsi lebih rinci dari setiap metode

  • _74. Urutkan hasil DataFrame dengan kunci gabungan dalam urutan leksikografis. Default ke 
    _65, pengaturan ke 
    61 akan meningkatkan kinerja secara substansial dalam banyak kasus

  • _77. Tuple sufiks string untuk diterapkan ke kolom yang tumpang tindih. Default ke 
    _78

  • _26. Selalu salin data (default 
    _65) dari objek DataFrame yang diteruskan, meskipun pengindeksan ulang tidak diperlukan. Tidak dapat dihindari dalam banyak kasus tetapi dapat meningkatkan kinerja/penggunaan memori. Kasus-kasus di mana penyalinan dapat dihindari agak bersifat patologis tetapi opsi ini tetap disediakan

  • _81. Tambahkan kolom ke output DataFrame yang disebut 
    82 dengan informasi tentang sumber setiap baris. 
    82 bertipe Categorical dan mengambil nilai 
    84 untuk pengamatan yang kunci gabungannya hanya muncul di 
    69 DataFrame, 
    86 untuk pengamatan yang kunci gabungannya hanya muncul di 
    70 DataFrame, dan 
    88 jika kunci gabungan pengamatan ditemukan di keduanya

    Baru di versi 0. 17. 0

Jenis pengembalian akan sama dengan

56. Jika 
56 adalah 
91 dan 
57 adalah subkelas dari DataFrame, tipe kembalian akan tetap 
91

55 adalah fungsi dalam namespace panda, dan juga tersedia sebagai metode instance DataFrame, dengan pemanggilan DataFrame secara implisit dianggap sebagai objek kiri dalam gabungan

Metode

_95 terkait, menggunakan 
55 secara internal untuk gabungan indeks-pada-indeks (secara default) dan kolom-kolom-pada-indeks. Jika Anda bergabung pada indeks saja, Anda mungkin ingin menggunakan 
95 untuk menghemat pengetikan

Primer singkat tentang metode penggabungan (aljabar relasional)

Pengguna database relasional yang berpengalaman seperti SQL akan terbiasa dengan terminologi yang digunakan untuk menggambarkan operasi gabungan antara dua struktur seperti tabel SQL (objek DataFrame). Ada beberapa kasus untuk dipertimbangkan yang sangat penting untuk dipahami

  • satu-ke-satu bergabung. misalnya saat menggabungkan dua objek DataFrame pada indeksnya (yang harus berisi nilai unik)
  • banyak-ke-satu bergabung. misalnya saat menggabungkan indeks (unik) ke satu atau beberapa kolom dalam DataFrame
  • banyak-ke-banyak bergabung. menggabungkan kolom pada kolom

Catatan

Saat menggabungkan kolom pada kolom (kemungkinan gabungan banyak-ke-banyak), indeks apa pun pada objek DataFrame yang diteruskan akan dibuang

Sebaiknya luangkan waktu untuk memahami hasil dari kasus gabungan banyak-ke-banyak. Dalam SQL/aljabar relasional standar, jika kombinasi tombol muncul lebih dari satu kali di kedua tabel, tabel yang dihasilkan akan memiliki produk Cartesian dari data terkait. Berikut adalah contoh yang sangat mendasar dengan satu kombinasi tombol yang unik

_6

Python luar bergabung dengan dua kamus

Berikut adalah contoh yang lebih rumit dengan beberapa kunci gabungan

_8

Python luar bergabung dengan dua kamus

Argumen ________0______68 ke

55 menentukan cara menentukan kunci mana yang akan disertakan dalam tabel yang dihasilkan. Jika kombinasi tombol tidak muncul di tabel kiri atau kanan, nilai di tabel yang digabungkan adalah 
pd.concat(objs, axis=0, join='outer', join_axes=None, ignore_index=False,
          keys=None, levels=None, names=None, verify_integrity=False,
          copy=True)
00. Berikut adalah ringkasan dari opsi
_68 dan nama setara SQL-nya

Merge methodSQL Join NameDescription
56
pd.concat(objs, axis=0, join='outer', join_axes=None, ignore_index=False,
          keys=None, levels=None, names=None, verify_integrity=False,
          copy=True)
03Gunakan kunci dari frame kiri saja
57
pd.concat(objs, axis=0, join='outer', join_axes=None, ignore_index=False,
          keys=None, levels=None, names=None, verify_integrity=False,
          copy=True)
05Gunakan kunci dari frame kanan saja
pd.concat(objs, axis=0, join='outer', join_axes=None, ignore_index=False,
          keys=None, levels=None, names=None, verify_integrity=False,
          copy=True)
06
pd.concat(objs, axis=0, join='outer', join_axes=None, ignore_index=False,
          keys=None, levels=None, names=None, verify_integrity=False,
          copy=True)
07Gunakan penyatuan kunci dari kedua frame
73
pd.concat(objs, axis=0, join='outer', join_axes=None, ignore_index=False,
          keys=None, levels=None, names=None, verify_integrity=False,
          copy=True)
09Gunakan persimpangan kunci dari kedua frame

In [7]: result.loc['y']
Out[7]: 
    A   B   C   D
4  A4  B4  C4  D4
5  A5  B5  C5  D5
6  A6  B6  C6  D6
7  A7  B7  C7  D7
0

Python luar bergabung dengan dua kamus

In [7]: result.loc['y']
Out[7]: 
    A   B   C   D
4  A4  B4  C4  D4
5  A5  B5  C5  D5
6  A6  B6  C6  D6
7  A7  B7  C7  D7
2

Python luar bergabung dengan dua kamus

In [7]: result.loc['y']
Out[7]: 
    A   B   C   D
4  A4  B4  C4  D4
5  A5  B5  C5  D5
6  A6  B6  C6  D6
7  A7  B7  C7  D7
4

Python luar bergabung dengan dua kamus

In [7]: result.loc['y']
Out[7]: 
    A   B   C   D
4  A4  B4  C4  D4
5  A5  B5  C5  D5
6  A6  B6  C6  D6
7  A7  B7  C7  D7
6

Python luar bergabung dengan dua kamus

Berikut adalah contoh lain dengan kunci gabungan duplikat di DataFrames

In [7]: result.loc['y']
Out[7]: 
    A   B   C   D
4  A4  B4  C4  D4
5  A5  B5  C5  D5
6  A6  B6  C6  D6
7  A7  B7  C7  D7
8

Python luar bergabung dengan dua kamus

Peringatan

Penggabungan/penggabungan pada kunci duplikat dapat menyebabkan bingkai yang dikembalikan yang merupakan perkalian dari dimensi baris, dapat mengakibatkan kelebihan memori. Merupakan tanggung jawab pengguna untuk mengelola nilai duplikat dalam kunci sebelum bergabung dengan DataFrame besar

Indikator gabungan

Baru di versi 0. 17. 0

_55 sekarang menerima argumen 
81. Jika 
_65, kolom tipe Kategorikal bernama 
82 akan ditambahkan ke objek keluaran yang mengambil nilai

Pengamatan Asal

82 nilaiMerge key hanya di 
69 frame
84Merge key hanya di 
70 frame
86Merge key di kedua frame
88

frames = [ process_your_file(f) for f in files ]
result = pd.concat(frames)
0

Argumen

81 juga akan menerima argumen string, dalam hal ini fungsi indikator akan menggunakan nilai string yang diteruskan sebagai nama untuk kolom indikator

frames = [ process_your_file(f) for f in files ]
result = pd.concat(frames)
_1

Menggabungkan Dtypes

Baru di versi 0. 19. 0

Penggabungan akan mempertahankan tipe kunci gabungan

frames = [ process_your_file(f) for f in files ]
result = pd.concat(frames)
_2

Kami dapat mempertahankan kunci gabungan

frames = [ process_your_file(f) for f in files ]
result = pd.concat(frames)
_3

Tentu saja jika Anda memiliki nilai-nilai yang hilang yang diperkenalkan, maka dtype yang dihasilkan akan dibuang

frames = [ process_your_file(f) for f in files ]
result = pd.concat(frames)
_4

Baru di versi 0. 20. 0

Penggabungan akan mempertahankan

pd.concat(objs, axis=0, join='outer', join_axes=None, ignore_index=False,
          keys=None, levels=None, names=None, verify_integrity=False,
          copy=True)
_21 jenis gabungan. Lihat juga bagian tentang

Bingkai kiri

frames = [ process_your_file(f) for f in files ]
result = pd.concat(frames)
_5

Bingkai yang tepat

frames = [ process_your_file(f) for f in files ]
result = pd.concat(frames)
_6

Hasil gabungan

frames = [ process_your_file(f) for f in files ]
result = pd.concat(frames)
_7

Catatan

Dtypes kategori harus persis sama, artinya kategori yang sama dan atribut yang dipesan. Kalau tidak, hasilnya akan memaksa

pd.concat(objs, axis=0, join='outer', join_axes=None, ignore_index=False,
          keys=None, levels=None, names=None, verify_integrity=False,
          copy=True)
22 dtype

Catatan

Penggabungan pada

pd.concat(objs, axis=0, join='outer', join_axes=None, ignore_index=False,
          keys=None, levels=None, names=None, verify_integrity=False,
          copy=True)
_21 dtypes yang sama bisa sangat berkinerja dibandingkan dengan
pd.concat(objs, axis=0, join='outer', join_axes=None, ignore_index=False,
          keys=None, levels=None, names=None, verify_integrity=False,
          copy=True)
22 dtype penggabungan

Bergabung di index

_95 adalah metode mudah untuk menggabungkan kolom dari dua DataFrames yang berpotensi diindeks berbeda menjadi satu hasil DataFrame. Ini adalah contoh yang sangat mendasar

frames = [ process_your_file(f) for f in files ]
result = pd.concat(frames)
_8

Python luar bergabung dengan dua kamus

In [8]: df4 = pd.DataFrame({'B': ['B2', 'B3', 'B6', 'B7'],
   ...:                  'D': ['D2', 'D3', 'D6', 'D7'],
   ...:                  'F': ['F2', 'F3', 'F6', 'F7']},
   ...:                 index=[2, 3, 6, 7])
   ...: 

In [9]: result = pd.concat([df1, df4], axis=1)
0

Python luar bergabung dengan dua kamus

In [8]: df4 = pd.DataFrame({'B': ['B2', 'B3', 'B6', 'B7'],
   ...:                  'D': ['D2', 'D3', 'D6', 'D7'],
   ...:                  'F': ['F2', 'F3', 'F6', 'F7']},
   ...:                 index=[2, 3, 6, 7])
   ...: 

In [9]: result = pd.concat([df1, df4], axis=1)
2

Python luar bergabung dengan dua kamus

Penyelarasan data di sini ada di indeks (label baris). Perilaku yang sama ini dapat dicapai dengan menggunakan

_55 plus argumen tambahan yang menginstruksikannya untuk menggunakan indeks

In [8]: df4 = pd.DataFrame({'B': ['B2', 'B3', 'B6', 'B7'],
   ...:                  'D': ['D2', 'D3', 'D6', 'D7'],
   ...:                  'F': ['F2', 'F3', 'F6', 'F7']},
   ...:                 index=[2, 3, 6, 7])
   ...: 

In [9]: result = pd.concat([df1, df4], axis=1)
4

Python luar bergabung dengan dua kamus

In [8]: df4 = pd.DataFrame({'B': ['B2', 'B3', 'B6', 'B7'],
   ...:                  'D': ['D2', 'D3', 'D6', 'D7'],
   ...:                  'F': ['F2', 'F3', 'F6', 'F7']},
   ...:                 index=[2, 3, 6, 7])
   ...: 

In [9]: result = pd.concat([df1, df4], axis=1)
6

Python luar bergabung dengan dua kamus

Bergabung dengan kolom kunci pada indeks

19 mengambil argumen opsional 
58 yang mungkin berupa kolom atau beberapa nama kolom, yang menentukan bahwa DataFrame yang diteruskan harus disejajarkan pada kolom tersebut di DataFrame. Kedua panggilan fungsi ini sepenuhnya setara

In [8]: df4 = pd.DataFrame({'B': ['B2', 'B3', 'B6', 'B7'],
   ...:                  'D': ['D2', 'D3', 'D6', 'D7'],
   ...:                  'F': ['F2', 'F3', 'F6', 'F7']},
   ...:                 index=[2, 3, 6, 7])
   ...: 

In [9]: result = pd.concat([df1, df4], axis=1)
8

Tentunya Anda dapat memilih bentuk mana yang menurut Anda lebih nyaman. Untuk gabungan banyak-ke-satu (di mana salah satu DataFrame sudah diindeks oleh kunci gabungan), menggunakan

19 mungkin lebih nyaman. Ini adalah contoh sederhana

In [8]: df4 = pd.DataFrame({'B': ['B2', 'B3', 'B6', 'B7'],
   ...:                  'D': ['D2', 'D3', 'D6', 'D7'],
   ...:                  'F': ['F2', 'F3', 'F6', 'F7']},
   ...:                 index=[2, 3, 6, 7])
   ...: 

In [9]: result = pd.concat([df1, df4], axis=1)
_9

Python luar bergabung dengan dua kamus

_1

Python luar bergabung dengan dua kamus

Untuk menggabungkan beberapa kunci, DataFrame yang diteruskan harus memiliki

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

_3

Sekarang ini bisa digabungkan dengan meneruskan dua nama kolom kunci

_4

Python luar bergabung dengan dua kamus

Default untuk

_95 adalah melakukan join kiri (pada dasarnya operasi "VLOOKUP", untuk pengguna Excel), yang hanya menggunakan kunci yang ditemukan dalam panggilan DataFrame. Jenis gabungan lainnya, misalnya gabungan dalam, dapat dilakukan dengan mudah

_6

Python luar bergabung dengan dua kamus

Seperti yang Anda lihat, ini menghapus setiap baris yang tidak cocok

Menggabungkan satu Indeks ke Multi-indeks

Baru di versi 0. 14. 0

Anda dapat bergabung dengan

91 terindeks tunggal dengan level 
91 terindeks ganda. Level akan cocok dengan nama indeks dari frame yang diindeks tunggal dengan nama level dari frame yang diindeks banyak

_8

Python luar bergabung dengan dua kamus

Ini setara tetapi kurang bertele-tele dan lebih hemat memori/lebih cepat dari ini

In [10]: result = pd.concat([df1, df4], axis=1, join='inner')
0

Python luar bergabung dengan dua kamus

Bergabung dengan dua multi-indeks

Ini tidak Diimplementasikan melalui

_19 saat ini, namun dapat dilakukan dengan menggunakan yang berikut ini

In [10]: result = pd.concat([df1, df4], axis=1, join='inner')
2

Python luar bergabung dengan dua kamus

Kolom nilai yang tumpang tindih

Argumen gabungan

_77 mengambil Tuple dari daftar string untuk ditambahkan ke nama kolom yang tumpang tindih di input DataFrames untuk memperjelas kolom hasil

In [10]: result = pd.concat([df1, df4], axis=1, join='inner')
4

Python luar bergabung dengan dua kamus

In [10]: result = pd.concat([df1, df4], axis=1, join='inner')
6

Python luar bergabung dengan dua kamus

_95 memiliki 
pd.concat(objs, axis=0, join='outer', join_axes=None, ignore_index=False,
          keys=None, levels=None, names=None, verify_integrity=False,
          copy=True)
37 dan
pd.concat(objs, axis=0, join='outer', join_axes=None, ignore_index=False,
          keys=None, levels=None, names=None, verify_integrity=False,
          copy=True)
38 argumen yang berperilaku serupa

In [10]: result = pd.concat([df1, df4], axis=1, join='inner')
8

Python luar bergabung dengan dua kamus

Bergabung dengan beberapa objek DataFrame atau Panel

Daftar atau tupel DataFrames juga dapat diteruskan ke

95 untuk bergabung bersama mereka di indeks mereka. Hal yang sama berlaku untuk 
pd.concat(objs, axis=0, join='outer', join_axes=None, ignore_index=False,
          keys=None, levels=None, names=None, verify_integrity=False,
          copy=True)
_40

_00

Python luar bergabung dengan dua kamus

Menggabungkan nilai dalam kolom Seri atau DataFrame

Situasi lain yang cukup umum adalah memiliki dua objek Seri atau DataFrame yang diindeks (atau diindeks serupa) dan ingin "menambal" nilai dalam satu objek dari nilai untuk pencocokan indeks di objek lain. Ini sebuah contoh

_02

Untuk ini, gunakan metode

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

_03

Python luar bergabung dengan dua kamus

Perhatikan bahwa metode ini hanya mengambil nilai dari DataFrame kanan jika hilang di DataFrame kiri. Metode terkait,

pd.concat(objs, axis=0, join='outer', join_axes=None, ignore_index=False,
          keys=None, levels=None, names=None, verify_integrity=False,
          copy=True)
_42, menggantikan nilai non-NA

_05

Python luar bergabung dengan dua kamus

Penggabungan ramah deret waktu

Menggabungkan Data yang Dipesan

Suatu fungsi memungkinkan menggabungkan deret waktu dan data terurut lainnya. Secara khusus ia memiliki kata kunci

pd.concat(objs, axis=0, join='outer', join_axes=None, ignore_index=False,
          keys=None, levels=None, names=None, verify_integrity=False,
          copy=True)
44 opsional untuk mengisi/menginterpolasi data yang hilang

_07

Penggabungan AsOf

Baru di versi 0. 19. 0

A mirip dengan left-join yang diurutkan kecuali bahwa kami cocok dengan kunci terdekat daripada kunci yang sama. Untuk setiap baris di

56 DataFrame, kami memilih baris terakhir di 
57 DataFrame yang kunci 
58 kurang dari kunci kiri. Kedua DataFrames harus diurutkan berdasarkan kunci

Secara opsional, penggabungan asof dapat melakukan penggabungan berdasarkan grup. Ini sama dengan kunci

pd.concat(objs, axis=0, join='outer', join_axes=None, ignore_index=False,
          keys=None, levels=None, names=None, verify_integrity=False,
          copy=True)
_49, selain kecocokan terdekat pada kunci
58

Sebagai contoh;

_08

_09

Secara default kami mengambil asof dari kutipan

_10

Kami hanya mulai dalam

pd.concat(objs, axis=0, join='outer', join_axes=None, ignore_index=False,
          keys=None, levels=None, names=None, verify_integrity=False,
          copy=True)
_55 antara waktu kutipan dan waktu perdagangan dan kami mengecualikan pencocokan persis tepat waktu. Perhatikan bahwa meskipun kami mengecualikan kecocokan persis (dari tanda kutip), tanda kutip sebelumnya TO menyebar ke titik waktu tersebut

Bisakah Anda menggabungkan dua kamus python?

Anda dapat menggabungkan dua kamus menggunakan. operator . Ini adalah metode yang sangat nyaman untuk menggabungkan kamus; . 9 versi atau lebih.

Bagaimana cara menggabungkan beberapa kamus menjadi satu?

Metode 2. Menggunakan operator pembongkaran . Kami juga dapat menggabungkan beberapa kamus menggunakan metode ini

Bagaimana Anda menggabungkan 3 kamus?

Jika Anda ingin menggabungkan tiga kamus, Anda harus menggabungkan dua yang pertama terlebih dahulu, lalu menggabungkan yang ketiga dengan kamus yang dimodifikasi .

Bagaimana cara menggabungkan dua kamus bersarang dengan python?

Jika Anda ingin mempertahankan a, Anda dapat menyebutnya seperti merge(dict(a), b). agf menunjukkan (di bawah) bahwa Anda mungkin memiliki lebih dari dua dict, dalam hal ini Anda dapat menggunakannya. kurangi(gabungkan, [dict1, dict2, dict3. ]) di mana semuanya akan ditambahkan ke dict1