반응형

09. 판다스 데이터프레임(DataFrame) 행,열의 추가/삭제 방법 (column, row add, drop)

1) 기본 코드

import pandas as pd

data = [['B00232', '새우깡', '2022-11-01', 1600],
         ['B03215', '양파링', '2023-01-31', 1200],
         ['B12098', '계란과자', '2022-06-03', 1400]]
columns = ['바코드', '제품명', '유통기한', '판매가']

df = pd.DataFrame(data=data, columns=columns)

df = df.set_index('바코드')

print(df)

 

반응형

 

2) 실행 결과

df['판매점'] = ['인천점', '수원점', '인천점']
print(df)
         제품명        유통기한   판매가  판매점
바코드                                
B00232   새우깡  2022-11-01  1600  인천점
B03215   양파링  2023-01-31  1200  수원점
B12098  계란과자  2022-06-03  1400  인천점
  • ['판매점']열을 추가
  • 순서에 맞춰서 ['인천점', '수원점', '인천점']가 입력됨
add_data2 = [['썬칩', '2022-08-25', 1100, '제주점']]
col2 = ['제품명', '유통기한', '판매가','판매점']

s = pd.DataFrame(data=add_data2, index=['B22456'], columns=col2)
df2 = pd.concat([s,df],axis=0)
print(df2)
         제품명        유통기한   판매가  판매점
B22456    썬칩  2022-08-25  1100  제주점
B00232   새우깡  2022-11-01  1600  인천점
B03215   양파링  2023-01-31  1200  수원점
B12098  계란과자  2022-06-03  1400  인천점
  • 하나의 데이터 프레임을 만들어 행을 추가하는 방법
  • concat을 이용하여 두개의 데이터 프레임을 합침
    • concat([데이터프레임1, 데이터프레임2....], axis=0,1..)
      • 데이터 프레임은 1개가 들어가더라도 리스트 형식으로 넣어야 함
      • axis=0은 행으로 데이터를 넣고(위아래로 붙이기) axis=1은 열로 데이터를 넣음(옆으로 붙이기)
    • append가 아닌 concat사용 이유
      • 단순하게 현재 데이터 프레임(df)에 append(s)를 해도 이상없이 추가가 됨
      • 하지만 아래의 경고처럼 추후에 기능이 삭제될 예정
        • FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
add_data3 = [['썬칩', '2022-08-25', 1100, '제주점']]
col3 = ['제품명', '유통기한', '판매가','판매점']

s = pd.DataFrame(data=add_data3, index=['B22456'], columns=col3)
df3 = df.append(s)
print(df3)
         제품명        유통기한   판매가  판매점
B00232   새우깡  2022-11-01  1600  인천점
B03215   양파링  2023-01-31  1200  수원점
B12098  계란과자  2022-06-03  1400  인천점
B22456    썬칩  2022-08-25  1100  제주점


C:\Users\Lee\AppData\Local\Temp\ipykernel_2832\2065307237.py:5: FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
  df3 = df.append(s)
print(df.drop(['유통기한'], axis=1))
         제품명   판매가  판매점
바코드                    
B00232   새우깡  1600  인천점
B03215   양파링  1200  수원점
B12098  계란과자  1400  인천점
  • Series와 마찬가지로 drop을 이용하여 특정 데이터 제외
    • Series와 마찬가지로 원본 데이터에서 데이터가 삭제되는 것은 아님
  • axis=1로 컬럼 전체를 삭제
print(df.drop(['B00232', 'B12098'], axis=0))
        제품명        유통기한   판매가  판매점
바코드                               
B03215  양파링  2023-01-31  1200  수원점
  • Series와 마찬가지로 drop을 이용하여 특정 데이터 제외
    • Series와 마찬가지로 원본 데이터에서 데이터가 삭제되는 것은 아님
  • axis=0으로 로우 전체를 삭제
반응형

+ Recent posts