Python/Pandas
Pandas _ row 추가하기 (loc & append)
MINSU KANG
2021. 1. 12. 20:05
파이썬 판다스에서 행을 추가하는 경우가 많았다. 어떻게 해야될지 참 난감했다. 그래서 주로 사용했던 방법은 업데이트가 될 때마다 새로운 dataFrame을 계속해서 만드는 방법을 사용했었는데, 오늘 포스팅하는 방법을 이용한다면 번거롭게 코딩할 필요가 없어질것 같다.
#%%
import numpy as np
import pandas as pd
from IPython.core.interactiveshell import InteractiveShell
InteractiveShell.ast_node_interactivity = "all"
pd.set_option('display.float_format', lambda x: '%.3f' % x)
pd.set_option('max_columns', None)
#%%
#1. loc[]을 사용하여 추가
df = pd.DataFrame(columns=['a','b'])
df.head()
# Add data as 'list'
df.loc[0] = [1, 2]
df.head()
# Add data as 'dict'
df.loc[len(df)] = {'b' : 'ㄱ', 'a' : 'ㅋ'}
df.head()
# Add data as 'Series'
df.loc['yay'] = pd.Series({'a':'ㅋ', 'b':'ㅎ'})
#2. append() 사용하여 추가하기
names_df = pd.DataFrame({'Name' : ['철수', '영희', '영수', '영미'],
'Age' : [12,13,14,15]},
index = ['Canada', 'Canada', 'USA', 'USA'])
names_df
# append() 메소드의 경우 index를 설정 안 해주면 Error
# ignore_index=True(이전 index를 reset한다)
names_df.append({'Name':'명수', 'Age':100}, ignore_index=True)
# 리스트 of 딕셔너리로도 전달 가능
names_df.append(
[
{'Name':'명수', 'Age':1},
{'Name':'동수', 'Age':2}
],
ignore_index=True
)
# dict 혹은 list가 아닌 series로 전달하는 경우
# `name` arg를 통해서 Series의 name을 부여하기
s = pd.Series({'Name': 'Zach', 'Age': 3}, name=len(names_df))
names_df.append(s)