python/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
'''