반응형
데이터 분석에서 여러 개의 데이터 세트를 결합하는 것은 흔한 일입니다. Pandas는 이를 위해 다양한 DataFrame 연결 메서드를 제공합니다. 이번 글에서는 두 개의 DataFrame 연결에 초점을 맞춰, 유용한 방법과 주의 사항을 살펴보겠습니다.
1. Merge : 공통 열 기준으로 결합
두 개의 DataFrame이 공통 열을 가지고 있을 때, 해당 열을 기준으로 데이터를 합병할 수 있습니다. 가장 일반적인 방법은 merge() 메서드 사용입니다.
df1 = pd.DataFrame({'name': ['Alice', 'Bob', 'Charlie'], 'age': [25, 30, 28]})
df2 = pd.DataFrame({'name': ['Alice', 'Charlie'], 'city': ['Seoul', 'Jeonju']})
merged_df = pd.merge(df1, df2, on='name')
print(merged_df)
위 코드는 name 열을 기준으로 두 DataFrame을 합병합니다. 결과적으로, name, age, city 열을 포함하는 새로운 DataFrame이 생성됩니다.
2. Concat : 축 기준으로 결합
두 개의 DataFrame을 축(axis)을 기준으로 연결할 수 있습니다. 축은 0 (행) 또는 1 (열)을 나타냅니다.
df1 = pd.DataFrame({'fruit': ['apple', 'banana', 'cherry'], 'price': [1000, 500, 700]})
df2 = pd.DataFrame({'vegetable': ['carrot', 'potato', 'onion'], 'price': [300, 200, 400]})
combined_df = pd.concat([df1, df2], axis=0) # 행 기준으로 연결
print(combined_df)
위 코드는 두 DataFrame을 행 기준으로 연결합니다. 결과적으로, fruit, price, vegetable 열을 포함하는 새로운 DataFrame이 생성됩니다.
concat 메서드는 두 개 이상의 데이터프레임을 합칠 수 있습니다.
pd.concat([df, df1, df2, df3], axis =0 )
3. Join : 모든 행 포함
합병과 연결은 공통 열이나 축을 기준으로 데이터를 결합하지만, 외부 연결은 모든 행을 포함하도록 결합합니다. 외부 연결에는 좌측 연결, 우측 연결, 내측 연결이 있습니다.
df1 = pd.DataFrame({'name': ['Alice', 'Bob', 'Charlie'], 'age': [25, 30, 28]})
df2 = pd.DataFrame({'name': ['Alice', 'David'], 'city': ['Seoul', 'Busan']})
left_joined_df = df1.merge(df2, how='left', on='name') # 좌측 연결
print(left_joined_df)
위 코드는 좌측 연결을 수행합니다. 결과적으로, name, age 열은 항상 포함되고, city 열은 해당하는 데이터가 있으면 포함되고, 없으면 NaN으로 채워집니다.
주의 사항
- 공통 열이나 축을 기준으로 연결할 때는 해당 열이나 축의 데이터 유형이 일치해야 합니다.
- 외부 연결 시 데이터 누락에 주의해야 합니다.
- 연결 방식에 따라 필요한 결과가 달라질 수 있으니, 어떤 연결이 가장 적합한지 고려해야 합니다.
'파이썬 > Pandas' 카테고리의 다른 글
데이터프레임의 인덱싱 : at, iloc, loc (2) | 2024.02.07 |
---|---|
Pandas에서 SettingWithCopy 에러 발생 원인과 해결 방법 (0) | 2024.01.26 |
저장된 파일을 데이터프레임으로 읽어올 때 na_values, na_filter 매개변수 활용하기 (0) | 2024.01.21 |
ValueError: Cannot mask with non-boolean array containing NA / NaN values (0) | 2024.01.20 |
Pandas 데이터 필터링 : 원하는 데이터만 골라내기 (0) | 2024.01.19 |