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

Pandas DataFrame 맨 위에 새로운 행 추가하는 방법

```html

Pandas의 DataFrame은 행과 열로 이루어진 2차원 표 형태의 데이터 구조입니다. 리스트, 딕셔너리, 시리즈 또는 다른 DataFrame을 사용해 생성할 수 있으며, 이미 만들어진 DataFrame에 새로운 행을 추가할 때는 일반적으로 내장 메서드를 사용합니다. 하지만 이러한 방법들은 기본적으로 새 행을 맨 아래(끝)에 추가합니다. 이 글에서는 인덱스를 활용한 몇 가지 트릭으로 새로운 행을 DataFrame의 맨 위에 추가하는 방법을 알아보겠습니다.

기본 DataFrame 만들기

먼저 예제로 사용할 DataFrame을 생성합니다.

import pandas as pd

data = {'Name': ['Tom', 'Jack', 'Mary', 'Ricky'],
        'Age': [28, 34, 29, 42],
        'Gender': ['M', 'M', 'F', 'F']}
df = pd.DataFrame(data)
print(df)

실행 결과

   Age Gender   Name
0   28      M    Tom
1   34      M   Jack
2   29      F   Mary
3   42      F  Ricky

방법 1: concat()과 reset_index() 활용

가장 널리 쓰이는 방법입니다. 새로운 행을 별도의 DataFrame으로 만든 뒤, 기존 DataFrame과 pd.concat()으로 연결하고 reset_index(drop=True)로 인덱스를 초기화하면 새 행이 자연스럽게 맨 위에 배치됩니다.

import pandas as pd

data = {'Name': ['Tom', 'Jack', 'Mary', 'Ricky'],
        'Age': [28, 34, 29, 42],
        'Gender': ['M', 'M', 'F', 'F']}
df = pd.DataFrame(data)

# 새로 추가할 행을 DataFrame으로 생성
top_row = pd.DataFrame({'Name': ['Lavina'], 'Age': [2], 'Gender': ['F']})

# 기존 DataFrame과 연결한 뒤 인덱스 재설정
df = pd.concat([top_row, df]).reset_index(drop=True)
print(df)

실행 결과

   Age Gender    Name
0    2      F  Lavina
1   28      M     Tom
2   34      M    Jack
3   29      F    Mary
4   42      F   Ricky

연결 순서를 반대로 하면([df, top_row]) 새 행이 맨 아래에 추가되므로, 순서에 유의해야 합니다. 참고로 과거에 많이 쓰이던 append()는 pandas 1.4부터 지원 중단(deprecated)되었기 때문에, 현재는 pd.concat()을 사용하는 것이 권장됩니다.

방법 2: loc / iloc 인덱싱 활용

iloc[0]에 값을 직접 대입하면 인덱스 0번 위치의 첫 번째 행에 값이 들어가지만, 기존 행을 덮어쓴다는 점에 주의해야 합니다.

# 주의: 기존 첫 번째 행(Tom)이 Piyu로 대체됨
df.iloc[0] = ['Piyu', 7, 'F']
print(df)

실행 결과

   Age Gender   Name
0    7      F   Piyu
1   34      M   Jack
2   29      F   Mary
3   42      F  Ricky

기존 행을 유지하면서 실제로 새 행을 맨 위에 삽입하려면, 임시 인덱스(-1)를 활용한 뒤 인덱스를 정렬하는 트릭을 사용할 수 있습니다.

# 임시 인덱스 -1에 새 행 할당
df.loc[-1] = ['Piyu', 7, 'F']

# 전체 인덱스를 1씩 증가시킨 뒤 오름차순 정렬
df.index = df.index + 1
df = df.sort_index()
print(df)

실행 결과

   Age Gender    Name
0    7      F    Piyu
1   28      M     Tom
2   34      M    Jack
3   29      F    Mary
4   42      F   Ricky

마무리

DataFrame 맨 위에 새 행을 추가하는 방법을 정리하면 다음과 같습니다.

  • 권장 방법: 새 행을 DataFrame으로 만들어 pd.concat()으로 연결한 후 reset_index(drop=True) 적용
  • 인덱스 트릭: loc[-1]에 새 행을 할당한 뒤 인덱스를 밀어 올리고 sort_index()로 정렬
  • 주의: iloc[0]에 직접 대입하면 기존 첫 번째 행이 삭제되지 않고 덮어써짐

대부분의 경우 코드가 간결하고 안전한 방법 1(concat 방식)을 사용하는 것이 가장 좋습니다.