pandas

[pandas] DataFrame 인덱스 관리

전감자(◔◡◔) 2022. 10. 2. 17:50

-1. 새로운 값으로 index로 설정할 때
df.index=[값,값2,...]

===>

dict_value={"date":['2002','2003'],
           "name":["홍길동","이순신"],
           "age":[20, 30]
           }

df=pd.DataFrame(dict_value)
print(df)

'''
   date name  age
0  2002  홍길동   20
1  2003  이순신   30
'''

#1. 기존 컬럼값으로 index를 설정할 때
#df.set_index()

new_df=df.set_index("date")#inplace=False(자신이 수정되지 않고 복사본을 생성해서 반환)
print(new_df)
'''
     name  age
date          
2002  홍길동   20
2003  이순신   30
'''
new_df=df.set_index("date",drop=False)#drop=True(기존 컬럼을 제거하고 인덱스로 설정)
print(new_df)
'''
      date name  age
date                
2002  2002  홍길동   20
2003  2003  이순신   30
'''
new_df=df.set_index("date",append=True)#append=True(기존 인덱스값을 새로운 값으로 덮어쓴다.)
print(new_df)
'''
      name  age
  date          
0 2002  홍길동   20
1 2003  이순신   30
'''
df.set_index("date",inplace=True)#inplace=True(자신이 수정됨.)
print(df)
'''
     name  age
date          
2002  홍길동   20
2003  이순신   30
'''

 

 

 

 

- 2. 기존 인덱스 재배치 

df.reindex([재배치 인덱스 값 리스트])

===>

list_value=np.arange(15).reshape(5,3)
df=pd.DataFrame(list_value,columns=['x','y','z'],index=list('EDABC'))
print(df)
'''
    x   y   z
E   0   1   2
D   3   4   5
A   6   7   8
B   9  10  11
C  12  13  14
'''

new_df=df.reindex(['A','B','C','D','E'])
print(new_df)
'''
    x   y   z
A   6   7   8
B   9  10  11
C  12  13  14
D   3   4   5
E   0   1   2
'''

 

 

 

-3. 병합시 인덱스를 빼고 병합한다.==> 뺀 이유는 중복해서 설정되기 때문
 pd.concat([df1,df2],ignore.index=True)

===>

df1=pd.DataFrame({"age":[1,2,3]})
df2=pd.DataFrame({"age":[4,5,6]})
print(df1)
print(df2)


new_df=pd.concat([df1,df2])
print(new_df)
'''
   age
0    1
1    2
2    3
0    4
1    5
2    6
=> primary key가 중복되면 안된다.
'''

new_df=pd.concat([df1,df2],ignore_index=True)
print(new_df)
'''
   age
0    1
1    2
2    3
3    4
4    5
5    6
'''