본문 바로가기
파이썬/파이썬 pandas

[pandas] 행 변경하기 append, loc, drop, index, rename

by Merware 2023. 5. 11.

가공할 데이터 준비

import pandas as pd
df = pd.read_csv('data/scores.csv')
df.index = range(100,3100,100)
df.head(3)

"""
	name	kor	eng	math
100	Aiden	100.0	90.0	95.0
200	Charles	90.0	80.0	75.0
300	Danial	95.0	100.0	100.0
"""

 

마지막에 행 추가하고 인덱스 다시 지정하기

  • 데이터프레임.append(추가할데이터, ignore_index=True)
  • 추가할 데이터는 딕셔너리 형태로 전달 : {컬럼1:값1, 컬럼2:값2,...}
  • 데이터프레임의 끝에 행 추가
  • 기존 인덱스는 무시하고, 인덱스가 새롭게 생성된다.
new_value = {'name':'Python','kor':80,'eng':90,'math':100}
df = df.append(new_value,  ignore_index=True)
df.tail()

"""
	name	kor	eng	math
26	Viviana	100.0	80.0	100.0
27	Vikkie	NaN	50.0	100.0
28	Winnie	70.0	100.0	70.0
29	Zuly	80.0	90.0	95.0
30	Python	80.0	90.0	100.0
"""

 

인덱스 지정하여 추가/수정하기

  • 데이터프레임.loc[인덱스] = 추가할데이터
  • 데이터프레임.loc[인덱스] = 수정할데이터
  • 인덱스가 존재하면 해당 인덱스의 데이터가 수정된다.
  • 인덱스가 존재하지 않으면 데이터프레임의 끝에 데이터가 추가된다.
# 인덱스 35에 추가
df.loc[35] = ['aaa',70,80,90]

# 인덱스 34에 추가
df.loc[34] = ['bbb',80,90,100]

df.tail()

"""
	name	kor	eng	math
28	Winnie	70.0	100.0	70.0
29	Zuly	80.0	90.0	95.0
30	Python	80.0	90.0	100.0
35	aaa	70.0	80.0	90.0
34	bbb	80.0	90.0	100.0
"""

 

행 삭제하기

  • 데이터프레임.drop(index=[삭제할인덱스리스트], inplace=True)
# 30,34,35 삭제
df.drop(index=[30,34,35], inplace=True)

df.tail()

"""
	name	kor	eng	math
25	Vanessa	95.0	70.0	95.0
26	Viviana	100.0	80.0	100.0
27	Vikkie	NaN	50.0	100.0
28	Winnie	70.0	100.0	70.0
29	Zuly	80.0	90.0	95.0
"""

 

인덱스 변경하기

전체 인덱스명 변경하기

  • 데이터프레임.index = 인덱스명리스트
    인덱스명리스트의 항목 수는 인덱스 수와 동일해야한다.
# range(100,3100,100)
df.index = range(100,3100,100)
df

"""
	name	kor	eng	math
100	Aiden	100.0	90.0	95.0
200	Charles	90.0	80.0	75.0
300	Danial	95.0	100.0	100.0
400	Evan	100.0	100.0	100.0
500	Henry	NaN	35.0	60.0
.
.
.
"""

 

특정 인덱스명 변경하기

  • 데이터프레임.rename(index={'현재인덱스명1':'바꿀인덱스명1','현재인덱스명2':'바꿀인덱스명2',...})
# 100-->'a', 200-->'b'
df.rename(index={100:'a',200:'b'}, inplace=True)
df.head()

"""
	name	kor	eng	math
a	Aiden	100.0	90.0	95.0
b	Charles	90.0	80.0	75.0
300	Danial	95.0	100.0	100.0
400	Evan	100.0	100.0	100.0
500	Henry	NaN	35.0	60.0
"""