>  기사  >  백엔드 개발  >  공통 날짜 열을 기반으로 여러 데이터프레임을 효율적으로 병합하려면 어떻게 해야 합니까?

공통 날짜 열을 기반으로 여러 데이터프레임을 효율적으로 병합하려면 어떻게 해야 합니까?

Susan Sarandon
Susan Sarandon원래의
2024-11-12 12:36:02963검색

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

날짜를 기준으로 여러 데이터 프레임 병합

날짜 열은 동일하지만 행과 열의 개수가 다른 여러 데이터 프레임이 있습니다. 목표는 이러한 데이터프레임을 병합하여 각 날짜가 모든 데이터프레임에 공통되는 행을 얻는 것입니다.

비효율적인 재귀 접근 방식

재귀 함수를 사용하여 데이터 프레임을 병합하려는 시도 결함이 있습니다. 함수는 동일한 입력으로 계속 자신을 호출하기 때문에 무한 루프에 들어갑니다. 이 접근 방식은 비효율적이며 오류가 발생하기 쉽습니다.

reduce를 사용한 최적화된 솔루션

여러 데이터 프레임을 병합하는 더 효율적인 방법은 functools 모듈의 축소 기능을 사용하는 것입니다. 이 함수는 지정된 병합 작업을 인접한 데이터 프레임 쌍에 반복적으로 적용하여 데이터 프레임 목록을 단일 데이터 프레임으로 줄입니다.

다음 코드 조각은 이 접근 방식을 보여줍니다.

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)

이 코드에서 , 축소 함수는 인접한 데이터 프레임 쌍을 반복적으로 병합하여 dfs 목록을 단일 데이터 프레임으로 줄입니다. on='date' 매개변수는 날짜 열을 기준으로 병합이 수행되어야 함을 지정합니다. How='outer' 매개변수는 두 데이터프레임의 모든 행이 동일한 날짜를 공유하지 않더라도 병합된 결과에 포함되도록 보장합니다.

reduce 함수의 장점

리듀스 기능을 사용하면 여러 가지 장점이 있습니다.

  • 단순성: 코드가 간결하고 이해하기 쉽습니다.
  • 중첩 없음: 재귀 접근 방식과 달리 병합 작업의 중첩이 없으므로 무한 루프의 위험이 제거됩니다.
  • 확장성: dfs 목록에서 데이터 프레임을 추가하거나 제거하여 병합을 변경할 수 있습니다. 동적으로 작업합니다.

제공된 데이터 프레임 df1, df2 및 df3을 사용하면 다음과 같은 병합된 데이터 프레임을 얻을 수 있습니다.

       DATE  VALUE1  VALUE2  VALUE3
0  May 15, 2017  1901.00  2902.00  3903.00

이 데이터프레임에는 세 가지 입력 데이터프레임 모두에 공통적인 날짜가 있는 행만 포함되어 있습니다.

위 내용은 공통 날짜 열을 기반으로 여러 데이터프레임을 효율적으로 병합하려면 어떻게 해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.