새소식

반응형
IT skill/Python

Pandas Dataframe row append 방법 중 하나 공유

  • -
반응형

Dataframe을 다루다보면 여러 파일로 나눠진 csv 파일 같은 것들을 하나로 합치고 싶을 때가 종종 생겼습니다.

 

df append를 은근히 내 입맛에 맞게 찾기가 힘들더라구요. 그래서 많은 방법이 있겠지만 그 중 제가 썼던 방법을 공유하고자 합니다.

 

우선 데이터를 만들어 보겠습니다. df1, df2는 합칠 dataframe이고 df는 df1, df2를 담을 dataframe입니다.

import pandas as pd

df = pd.DataFrame(columns=['id', 'elements'])
df1 = pd.DataFrame(columns=['id', 'elements'], data=[['a', 123],['b', 234], ['c', 345]])
df2 = pd.DataFrame(columns=['id', 'elements'], data=[['d', 111],['e', 222], ['f', 333]])

 

df1
df2

 

1. append 용으로 dictionary를 만들고

2. iterrows 로 for loop를 돌면서 행 값을 하나 씩 얻어

3. 각각의 행을 dict에 append 후

4. df 변수에 append를 하는 방식입니다.

 

이렇게 하면 여러 상황에 대응이 가능했습니다.

append_dict = {
    'id': [],
    'elements': []
}
for row in df1.iterrows():
    append_dict['id'].append(row[1][0])
    append_dict['elements'].append(row[1][1])

for row in df2.iterrows():
    append_dict['id'].append(row[1][0])
    append_dict['elements'].append(row[1][1])

df = df.append(pd.DataFrame(append_dict), ignore_index=True)

 

append 결과

 

column이 strict한 경우, 이렇게 표현해볼 수도 있습니다. 더 고수 분들이 많으시겠지만 저는 이까지만 해보겠습니다.

append_dict = {
    df.columns[0]: [],
    df.columns[1]: []
}
for row in df1.iterrows():
    for i, column_name in enumerate(df.columns):
        append_dict[column_name].append(row[1][i])

for row in df2.iterrows():
    for i, column_name in enumerate(df.columns):
        append_dict[column_name].append(row[1][i])

df = df.append(pd.DataFrame(append_dict), ignore_index=True)

 

사실 strict한 데이터 형식이라면 이번 예시의 경우 이렇게 표현하면 한 방에 됩니다..ㅋㅋ 하지만 제가 위에 보여드렸던 방식은 여러 상황에 대응이 됩니다.

dfdf = pd.DataFrame(columns=['id', 'elements'])

dfdf = dfdf.append(df1)
dfdf = dfdf.append(df2)

 

 

 

도움이 되셨다면 아무 광고나 클릭 한 번 부탁드립니다👍

반응형
Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감과 광고 클릭 부탁드립니다~