set_index
함수를 이용해 변경 가능df = pd.DataFrame({"A":[1,4,7], "B":[2,5,8], "C":[3,6,9]})
print(df)
# A B C
# 0 1 2 3
# 1 4 5 6
# 2 7 8 9
# 'A' column을 인덱스로 지정하기
df = df.set_index('A')
print(df)
# B C
# A
# 1 2 3
# 4 5 6
# 7 8 9
df.columns
로 전체 열 이름을 설정 가능df.rename
으로 변경할 열 이름만 지정하려 변경 가능# 전체 열 이름 입력하기
df.columns = ['name1', 'name2', 'name3']
# 선택하여 열 이름 변경하기
df.rename(columns={'Beforename':'Aftername'}, inplace=True)
loc
사용df = pd.DataFrame(data=np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]]),
index= [2.5, 12.6, 4.8],
columns=[48, 49, 50])
print(df)
# 48 49 50
# 2.5 1 2 3
# 12.6 4 5 6
# 4.8 7 8 9
# 새로운 index=2인 row가 만들어짐
df.loc[2] = [11, 12, 13]
print(df)
# 48 49 50
# 2.5 1 2 3
# 12.6 4 5 6
# 4.8 7 8 9
# 2.0 11 12 13
append
이용df = pd.DataFrame(data=np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]]),
columns=[48, 49, 50])
print(df)
# 48 49 50
# 0 1 2 3
# 1 4 5 6
# 2 7 8 9
a = pd.DataFrame(data=[[1,2,3]], columns=[48,49,50])
print(a)
# 48 49 50
# 0 1 2 3
df = df.append(a)
df = df.reset_index(drop=True)
print(df)
# 48 49 50
# 0 1 2 3
# 1 4 5 6
# 2 7 8 9
# 3 1 2 3
loc
이용df = pd.DataFrame(data=np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]]),
columns=['A', 'B', 'C'])
print(df)
# A B C
# 0 1 2 3
# 1 4 5 6
# 2 7 8 9
df.loc[:, 'D'] = pd.Series(['5', '6', '7'], index=df.index)
print(df)
# A B C D
# 0 1 2 3 5
# 1 4 5 6 6
# 2 7 8 9 7
DataFrame[’columnName’]
이용df['E'] = pd.Series(['5', '6', '7'], index=df.index)
print(df)
# A B C D E
# 0 1 2 3 5 5
# 1 4 5 6 6 6
# 2 7 8 9 7 7
reset_index
함수를 이용해 index 리셋하는 것을 주로 사용del DataFrame.index.name
을 이용df = pd.DataFrame(data=np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]]), columns=['A', 'B', 'C'])
print(df)
# A B C
# 0 1 2 3
# 1 4 5 6
# 2 7 8 9
# 'A' column 삭제
df.drop('A', axis=1, inplace=True)
print(df)
# B C
# 0 2 3
# 1 5 6
# 2 8 9
drop_duplicate
사용하여 특정 컬럼(subset 키워드)의 값이 중복된 로우 제거df = pd.DataFrame(data=np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9], [40, 50, 60], [23, 35, 37]]),
index= [2.5, 12.6, 4.8, 4.8, 2.5],
columns=[48, 49, 50])
print(df)
# 48 49 50
# 2.5 1 2 3
# 12.6 4 5 6
# 4.8 7 8 9
# 4.8 40 50 60
# 2.5 23 35 37
df = df.reset_index()
print(df)
# index 48 49 50
# 0 2.5 1 2 3
# 1 12.6 4 5 6
# 2 4.8 7 8 9
# 3 4.8 40 50 60
# 4 2.5 23 35 37
df = df.drop_duplicates(subset='index', keep='last').set_index('index')
print(df)
# 48 49 50
# index
# 12.6 4 5 6
# 4.8 40 50 60
# 2.5 23 35 37
df = pd.DataFrame(data=np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]]),
columns=['A', 'B', 'C'])
print(df)
# A B C
# 0 1 2 3
# 1 4 5 6
# 2 7 8 9
print(df.drop(df.index[1]))
# A B C
# 0 1 2 3
# 2 7 8 9
print(df.drop(0))
# A B C
# 1 4 5 6
# 2 7 8 9
df = pd.DataFrame(data=np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]]),
columns=['A', 'B', 'C'])
print(df)
# A B C
# 0 1 2 3
# 1 4 5 6
# 2 7 8 9
df.at[0, 'A'] = 0
print(df)
# A B C
# 0 0 2 3
# 1 4 5 6
# 2 7 8 9
참고로 df.loc[0]['A'] = 0
으로 수행하면 가끔 아래와 같은 에러가 발생함
SettingWithCopyWarning: A value is trying to be set on a copy of a slice from a DataFrame
그러니 at을 사용해 수정하는 것을 추천