본문 바로가기

Python

[Python] 판다스(pandas)_2. 인덱스 변경(reindex)

#정리

#02reindex - 인덱스 재설정, 빈 값 채우기 

#기존에 없는 인덱스로 변경: index['A','B','C'] >> index[1,2,3]

 - 인덱스 변경 뒤, index 매칭이 안되는 데이터는 NaN으로 표기됨.

 >> col = col.reindex([i for i in range(65,65+5)])
#기존 인덱스의 순서를 변경 :index['A','C','B'] >>index['A','B','C']
 - 기존에 있는 인덱스의 순서만 변경되면, 변경된 인덱스 순서에 맞춰 값도 같이 움직인다.

 - 새로 추가되어 매친되는 값이 없는 인덱스는 데이터가 NaN으로 표기됨.
 >> col = col.reindex(['A','B','C','D','E'])

 - fill_value : 새로운 인덱스의 경우, 지정 값을 삽입(디폴트값 지정과 비슷)
 >> col = col.reindex([chr(i) for i in range(65,65+6)],fill_value=100) 

# method='ffill','pad' 옵션 : 바로 앞에 값으로 NaN값을 채워줘 (맨 처음 값은 못채움)
 - print(col.reindex(range(6),method='ffill'))
 - print(col.reindex(range(6),method='pad'))
# method='bfill','backfill' 옵션 : 바로 뒤에 값으로 NaN값을 채워줘 (맨 뒤의 값은 못채움)
 - print(col.reindex(range(6),method='bfill'))
 - print(col.reindex(range(6),method='backfill'))
#display.max.colwidth',100 : 데이터를 100자리까지 표현해줘
 - 데이터값은 40자리까지 표현이 기본
 - pd.set_option('display.max.colwidth',100) 

 

 

 

#02reindex - 인덱스 재설정, 빈 값 채우기 

#기존에 없는 인덱스로 변경: index['A','B','C'] >> index[1,2,3]

 - 인덱스 변경 뒤, index 매칭이 안되는 데이터는 NaN으로 표기됨.

 >> col = col.reindex([i for i in range(65,65+5)])
#기존 인덱스의 순서를 변경 :index['A','C','B'] >>index['A','B','C']
 - 기존에 있는 인덱스의 순서만 변경되면, 변경된 인덱스 순서에 맞춰 값도 같이 움직인다.

 - 새로 추가되어 매친되는 값이 없는 인덱스는 데이터가 NaN으로 표기됨.
 >> col = col.reindex(['A','B','C','D','E'])

 - fill_value : 새로운 인덱스의 경우, 지정 값을 삽입(디폴트값 지정과 비슷)
 >> col = col.reindex([chr(i) for i in range(65,65+6)],fill_value=100) 

# method='ffill','pad' 옵션 : 바로 앞에 값으로 NaN값을 채워줘 (맨 처음 값은 못채움)
 - print(col.reindex(range(6),method='ffill'))
 - print(col.reindex(range(6),method='pad'))
# method='bfill','backfill' 옵션 : 바로 뒤에 값으로 NaN값을 채워줘 (맨 뒤의 값은 못채움)
 - print(col.reindex(range(6),method='bfill'))
 - print(col.reindex(range(6),method='backfill'))
#display.max.colwidth',100 : 데이터를 100자리까지 표현해줘
 - 데이터값은 40자리까지 표현이 기본
 - pd.set_option('display.max.colwidth',100)

 

 

 


--예문 코드 보기--

더보기
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import numpy as np
import pandas as pd

print("numpy version",pd.__version__) #pandas version check
print("---------------")

col = pd.Series(np.arange(1,5+1),index=['A','B','C','D','E']) 
col = pd.Series(np.arange(1,5+1),index=[i for i in range(65,65+5)]) #index옵션 추가
col = pd.Series(np.arange(1,5+1),index=[chr(i) for i in range(65,65+5)]) #문자 index가능
print(col.index)
print(col)


print("---기존에 없는 인덱스로 변경----")
#인덱스를 변경한다. 
col = col.reindex([i for i in range(65,65+5)])
print(col.index) 
print(col) #인덱스 변경 뒤, index 매칭이 안되는 데이터는 NaN으로 표기됨.


print("---기존 인덱스의 순서를 변경----")
#기존에 있는 인덱스의 순서만 변경되면, 변경된 인덱스 순서에 맞춰 값도 같이 움직인다.
col = pd.Series(np.arange(1,5+1),index=['E','A','D','B','C']) #개별 지정 가능
col = col.reindex(['A','B','C','D','E'])
col = col.reindex([chr(i) for i in range(65,65+6)],fill_value=100) 
#fill_value : 새로운 인덱스의 경우, 지정 값을 삽입(디폴트값 지정과 비슷)
print(col.index) 
print(col) #새로운 인덱스가 추가되어, index 매칭이 안되는 데이터는 NaN으로 표기됨.

print("---mission----")
sports = ['야구','축구','배구']
col = pd.Series(sports,index=[1,3,4])
print(col)

#index = 0~5로 변경 후, fill_value = '기타'
print(col.reindex(range(6),fill_value="기타"))

# method='ffill' 옵션 : 바로 앞에 값으로 NaN값을 채워줘 (맨 처음 값은 못채움)
print(col.reindex(range(6),method='ffill'))
print(col.reindex(range(6),method='pad'))
# method='bfill' 옵션 : 바로 뒤에 값으로 NaN값을 채워줘 (맨 뒤의 값은 못채움)
print(col.reindex(range(6),method='bfill'))
print(col.reindex(range(6),method='backfill'))

print("-----------")
txt = '''
1234567890123456789012345678901234567890
1234567890123456789012345678901234567890
'''
col = pd.Series([txt])
print(len(col[0]))
print(col) #데이터값은 40자리까지 표현이 기본
pd.set_option('display.max.colwidth',100) #데이터를 100자리까지 표현해줘
print(col)