In [3]:
#set_index() : 데이터프레임을 먼저 불러 온 후, 특정 열을 인덱스로 설정
import pandas as pd

exam_data = {'이름' : ['서준','우현','인아'],
            '수학' : [90,80,70],
            '영어' : [98,89,95],
            '음악' : [85,95,100],
            '체육' : [100,90,90]}
df = pd.DataFrame(exam_data)
print(df)
print('\n')

ndf1 = df.set_index('이름')  # '이름'열을 인덱스로 사용
print(ndf1)
print('\n')

ndf2 = ndf1.set_index(['음악']) # '음악'열을 인덱스로 사용
print(ndf2)
print('\n')

ndf3 = ndf1.set_index(['수학','음악']) # '수학','음악'열을 인덱스로 사용
print(ndf3)

#이름 열을 인덱스로 설정하고 다시 음악열에 인덱스로 부여 해줄 때 이름열이 사라짐.

#인덱스로 지정해되 기존 열은 남겨 둔다.(drop=True)
print(ndf1.set_index('음악', drop=False))
   이름  수학  영어   음악   체육
0  서준  90  98   85  100
1  우현  80  89   95   90
2  인아  70  95  100   90


    수학  영어   음악   체육
이름                  
서준  90  98   85  100
우현  80  89   95   90
인아  70  95  100   90


     수학  영어   체육
음악              
85   90  98  100
95   80  89   90
100  70  95   90


        영어   체육
수학 음악          
90 85   98  100
80 95   89   90
70 100  95   90
     수학  영어   음악   체육
음악                   
85   90  98   85  100
95   80  89   95   90
100  70  95  100   90
In [5]:
#reindex() : 행 인덱스 재배열
dict_data = {'c0':[1,2,3], 'c1':[4,5,6], 'c2':[7,8,9], 'c3':[10,11,12], 'c4':[13,14,15]}
df = pd.DataFrame(dict_data, index = ['r0','r1','r2'])
print(df)
print('\n')

#인덱스 자체를 바꿔주는 함수가 아니기 때문에 기존 값이 없으면 NaN 값이 채워짐
new_index = ['r0','r1','r2','r3','r4']
ndf = df.reindex(new_index)
print(ndf)
print('\n')

#NaN을 0으로 채우려면 fill_value=0
ndf = df.reindex(new_index, fill_value=0)
print(ndf)
print('\n')

#새로운 인덱스를 지정하면 모두 NaN값
test = df.reindex(['s1','s2','s3'])
print(test)
    c0  c1  c2  c3  c4
r0   1   4   7  10  13
r1   2   5   8  11  14
r2   3   6   9  12  15


     c0   c1   c2    c3    c4
r0  1.0  4.0  7.0  10.0  13.0
r1  2.0  5.0  8.0  11.0  14.0
r2  3.0  6.0  9.0  12.0  15.0
r3  NaN  NaN  NaN   NaN   NaN
r4  NaN  NaN  NaN   NaN   NaN


    c0  c1  c2  c3  c4
r0   1   4   7  10  13
r1   2   5   8  11  14
r2   3   6   9  12  15
r3   0   0   0   0   0
r4   0   0   0   0   0


    c0  c1  c2  c3  c4
s1 NaN NaN NaN NaN NaN
s2 NaN NaN NaN NaN NaN
s3 NaN NaN NaN NaN NaN
In [6]:
#reset_index() : 행 인덱스 초기화
#처음부터 다시 재배열 해주는 함수
dict_data = {'c0':[1,2,3], 'c1':[4,5,6], 'c2':[7,8,9], 'c3':[10,11,12], 'c4':[13,14,15]}
df = pd.DataFrame(dict_data, index = ['r0','r1','r2'])
print(df)
print('\n')

#행 인덱스를 정수형, 기본값인 0부터 시작하는 순서로 초기화
ndf = df.reset_index()
print(ndf)
print('\n')

#drop=True 기존 인덱스를 버리고 재배열
#inplace=True 
df.reset_index(drop=True, inplace=True)
print(df)
    c0  c1  c2  c3  c4
r0   1   4   7  10  13
r1   2   5   8  11  14
r2   3   6   9  12  15


  index  c0  c1  c2  c3  c4
0    r0   1   4   7  10  13
1    r1   2   5   8  11  14
2    r2   3   6   9  12  15


   c0  c1  c2  c3  c4
0   1   4   7  10  13
1   2   5   8  11  14
2   3   6   9  12  15
In [7]:
#sort_index() : 열의 데이터 값을 기준으로 정렬
#df.sort_value(by ='열이름', ascending = True)

dict_data = {'c0':[1,2,3], 'c1':[4,5,6], 'c2':[7,8,9], 'c3':[10,11,12], 'c4':[13,14,15]}
df = pd.DataFrame(dict_data, index = ['r0','r1','r2'])

#c1열을 기준으로 내림차순 정렬
ndf = df.sort_values(by = 'c1',ascending=False)
print(df, '\n')
print(ndf)
    c0  c1  c2  c3  c4
r0   1   4   7  10  13
r1   2   5   8  11  14
r2   3   6   9  12  15 

    c0  c1  c2  c3  c4
r2   3   6   9  12  15
r1   2   5   8  11  14
r0   1   4   7  10  13
In [ ]: