Bagaimanakah cara saya menggabungkan berbilang bingkai data dengan cekap berdasarkan lajur tarikh biasa?

Susan Sarandon
Lepaskan: 2024-11-12 12:36:02
asal
972 orang telah melayarinya

How do I efficiently merge multiple dataframes based on a common date column?

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)
Salin selepas log masuk

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:

  • Kesederhanaan: Kod ini ringkas dan mudah difahami.
  • Tiada Bersarang: Tidak seperti pendekatan rekursi anda, tiada operasi cantuman bersarang, menghapuskan risiko gelung tak terhingga.
  • Kebolehlanjutan: Anda boleh menambah atau mengalih keluar bingkai data daripada senarai dfs untuk menukar cantuman operasi secara dinamik.

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
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan