Computer >> 컴퓨터 >  >> 프로그래밍 >> Python

Python Pandas – DataFrame에 행을 추가하는 방법 (append()와 concat() 활용)

Pandas DataFrame에 새로운 행을 추가하려면 append() 메서드를 사용할 수 있습니다. 이 글에서는 두 개의 DataFrame을 만들고, 하나를 다른 하나 뒤에 연결하여 행을 추가하는 과정을 단계별로 살펴봅니다.

1. Pandas 라이브러리 불러오기

먼저 pandas를 별칭(alias)과 함께 임포트합니다.

import pandas as pd

2. 첫 번째 DataFrame 생성

차량 이름을 담은 첫 번째 DataFrame을 만듭니다.

dataFrame1 = pd.DataFrame(
    {
        "Car": ['BMW', 'Lexus', 'Audi', 'Jaguar']
    }
)

3. 두 번째 DataFrame 생성

같은 구조로 두 번째 DataFrame을 만듭니다.

dataFrame2 = pd.DataFrame(
    {
        "Car": ['Mercedes', 'Tesla', 'Bentley', 'Mustang']
    }
)

4. 행을 끝에 추가하기

append() 메서드를 사용하면 두 번째 DataFrame의 행들이 첫 번째 DataFrame의 맨 뒤에 연결됩니다.

dataFrame1 = dataFrame1.append(dataFrame2)

전체 예제 코드

다음은 위 과정을 모두 포함한 전체 코드입니다.

import pandas as pd

# 첫 번째 DataFrame 생성
dataFrame1 = pd.DataFrame(
    {
        "Car": ['BMW', 'Lexus', 'Audi', 'Jaguar']
    }
)

print("DataFrame1 ...\n", dataFrame1)

# DataFrame1의 길이(행 수) 확인
print("DataFrame1 length = ", len(dataFrame1))

# 두 번째 DataFrame 생성
dataFrame2 = pd.DataFrame(
    {
        "Car": ['Mercedes', 'Tesla', 'Bentley', 'Mustang']
    }
)

print("\nDataFrame2 ...\n", dataFrame2)

# DataFrame2의 길이(행 수) 확인
print("DataFrame2 length = ", len(dataFrame2))

# 두 DataFrame 연결(행 추가)
dataFrame1 = dataFrame1.append(dataFrame2)
print("\nAppending dataframes...\n", dataFrame1)

실행 결과

위 코드를 실행하면 다음과 같은 출력이 나타납니다.

DataFrame1 ...
        Car
0      BMW
1    Lexus
2     Audi
3   Jaguar
DataFrame1 length = 4

DataFrame2 ...
         Car
0  Mercedes
1     Tesla
2   Bentley
3   Mustang
DataFrame2 length = 4

Appending dataframes...
        Car
0       BMW
1     Lexus
2      Audi
3    Jaguar
0  Mercedes
1     Tesla
2   Bentley
3   Mustang

출력 결과를 보면 두 번째 DataFrame의 행들이 그대로 뒤에 붙어 총 8개의 행을 가진 DataFrame이 되었지만, 인덱스가 각각 0~3으로 중복되어 나타나는 점에 유의해야 합니다.

참고: 최신 버전에서는 pd.concat() 사용을 권장합니다

append() 메서드는 pandas 1.4.0부터 공식적으로 지원 중단(deprecated)되었으며, pandas 2.0부터는 완전히 제거되었습니다. 따라서 최신 환경에서는 pd.concat() 함수를 사용하는 것이 좋습니다.

# 최신 pandas에서 권장되는 방식
result = pd.concat([dataFrame1, dataFrame2], ignore_index=True)
print(result)

ignore_index=True 옵션을 함께 사용하면 기존 인덱스를 무시하고 0부터 시작하는 연속된 새 인덱스가 자동으로 부여되어, 위 예제에서 발생했던 인덱스 중복 문제도 깔끔하게 해결됩니다.