Menggabungkan Berbilang Bingkai Data Berdasarkan Tarikh
Anda mempunyai berbilang bingkai data dengan lajur tarikh biasa tetapi bilangan baris dan lajur yang berbeza-beza. Matlamatnya adalah untuk menggabungkan bingkai data ini untuk mendapatkan baris di mana setiap tarikh adalah biasa kepada semua bingkai data.
Pendekatan Rekursi Tidak Cekap
Percubaan anda untuk menggunakan fungsi rekursi untuk menggabungkan bingkai data adalah cacat. Fungsi memasuki gelung tak terhingga kerana ia terus memanggil dirinya dengan input yang sama. Pendekatan ini tidak cekap dan terdedah kepada ralat.
Penyelesaian Dioptimumkan Menggunakan reduce
Kaedah yang lebih cekap untuk menggabungkan berbilang bingkai data ialah menggunakan fungsi reduce daripada modul functools. Fungsi ini mengurangkan senarai bingkai data menjadi satu bingkai data dengan berulang kali menggunakan operasi cantum yang ditentukan pada pasangan bersebelahan bingkai data.
Coretan kod berikut menunjukkan pendekatan ini:
import pandas as pd from functools import reduce dfs = [df1, df2, df3] # list of dataframes df_merged = reduce(lambda left, right: pd.merge(left, right, on='date', how='outer'), dfs)
Dalam kod ini , fungsi reduce mengurangkan senarai dfs menjadi satu bingkai data dengan menggabungkan pasangan bingkai data bersebelahan secara berulang. Parameter on='date' menentukan bahawa gabungan harus dilakukan berdasarkan lajur tarikh. Parameter how='outer' memastikan bahawa semua baris daripada kedua-dua bingkai data disertakan dalam hasil gabungan, walaupun jika mereka tidak berkongsi tarikh yang sama.
Kelebihan mengurangkan Fungsi
Menggunakan fungsi pengurangan menawarkan beberapa kelebihan:
Contoh
Menggunakan bingkai data yang disediakan df1, df2 dan df3, anda akan memperoleh rangka data gabungan berikut:
DATE VALUE1 VALUE2 VALUE3 0 May 15, 2017 1901.00 2902.00 3903.00
Bingkai data ini hanya mengandungi baris dengan tarikh yang biasa kepada ketiga-tiga bingkai data input.
Atas ialah kandungan terperinci Bagaimanakah cara saya menggabungkan berbilang bingkai data dengan cekap berdasarkan lajur tarikh biasa?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!