Gabungkan dua bingkai data berdasarkan nilai kolom yang sama di Pandas

Cara mendapatkan bingkai data gabungan dari dua bingkai data yang memiliki nilai kolom yang sama sehingga hanya baris-baris tersebut yang membuat bingkai data gabungan yang memiliki nilai yang sama pada kolom tertentu.

Saya memiliki 5000 baris df1 sebagai format: -

    director_name   actor_1_name    actor_2_name    actor_3_name    movie_title
0   James Cameron   CCH Pounder Joel David Moore    Wes Studi     Avatar
1   Gore Verbinski  Johnny Depp Orlando Bloom   Jack Davenport   Pirates 
    of the Caribbean: At World's End
2   Sam Mendes   Christoph Waltz    Rory Kinnear    Stephanie Sigman Spectre

dan 10000 baris df2 sebagai

movieId                   genres                        movie_title
    1       Adventure|Animation|Children|Comedy|Fantasy   Toy Story
    2       Adventure|Children|Fantasy                    Jumanji
    3       Comedy|Romance                             Grumpier Old Men
    4       Comedy|Drama|Romance                      Waiting to Exhale

Kolom umum 'movie_title' memiliki nilai yang sama dan berdasarkan nilai tersebut, saya ingin mendapatkan semua baris di mana 'movie_title' adalah sama. Baris lain yang akan dihapus.

Bantuan/saran akan sangat dihargai.

Catatan: Saya sudah mencoba

pd.merge(dfinal, df1, on='movie_title')

dan output yang dihasilkan seperti satu baris

director_name   actor_1_name    actor_2_name    actor_3_name    movie_title movieId title   genres

dan bagaimana ="outer"/"left", "right", saya mencoba semua dan tidak mendapatkan baris apapun setelah menjatuhkan NaN meskipun banyak kolom umum yang ada.

Anda bisa menggunakan pd.merge:

import pandas as pd
pd.merge(df1, df2, on="movie_title")

Hanya baris-baris yang disimpan untuk kunci umum yang ditemukan di kedua bingkai data. Jika Anda ingin menyimpan semua baris dari bingkai data kiri dan hanya menambahkan nilai dari df2 di mana kunci yang cocok tersedia, Anda dapat menggunakan how="left".

Komentar (4)
Larutan

Kita dapat menggabungkan dua Data frame dengan beberapa cara. Cara yang paling umum dalam python adalah menggunakan operasi penggabungan di Pandas.

import pandas
dfinal = df1.merge(df2, on="movie_title", how = 'inner')

Untuk penggabungan berdasarkan kolom-kolom dari dataframe yang berbeda, Anda dapat menentukan nama kolom umum kiri dan kanan secara khusus jika terjadi ambiguitas dua nama yang berbeda dari kolom yang sama, katakanlah - 'movie_title' sebagai 'movie_name'.

dfinal = df1.merge(df2, how='inner', left_on='movie_title', right_on='movie_name')

Jika anda ingin lebih spesifik lagi, anda dapat membaca dokumentasi operasi pandas merge.

Komentar (0)

Jika Anda ingin menggabungkan dua bingkai data dan Anda ingin bingkai data gabungan di mana hanya nilai umum dari kedua bingkai data yang akan muncul, maka lakukan penggabungan bagian dalam.

import pandas as pd

merged_Frame = pd.merge(df1,df2, on = id,how=inner)
Komentar (0)