import pandas as pd
df = pd.DataFrame({'Old A' : ['Old a1', 'Old a2', 'Old a3', 'Old a4'], 'Old B' : ['Old b1', 'Old b2', 'Old b3', 'Old b4'], 'Old C' : ['Old c1', 'Old c2', 'Old c3', 'Old c4']})
df

1. 인덱스 명 바꾸기

 

  • 1-1 df.index = ["바꿀 인덱스 값"]

# 모든 인덱스를 바꿀때만 

# 이미 생성된 컬럼수와 입력하는 컬럼수가 같아야함
df.index = ["New 0", "New 1", "New 2", "New 3"]
df

 

 

 

  • 1- 2 df.rename(columns = {"원래이름" : "바꿀이름" }, option)   

(일부의 인덱스명만 바꿀때 and 인덱스명으로)

 * rename의 파라미터인 딕셔너리 형태로 써줌

# 일부의 인덱스명만 바꿀때 and 인덱스명으로
df.rename(index = {0: "New 0", 1: "New 1"}) 
# df.rename({0: "New 0", 1: "New 1"}, axis =0)

# axis= 0 은 인덱스  (생략도 가능)

 

 

 

option : inplace = True (기존값도 변경)   

 

  • 1-3 df.index.values[컬럼번호] = "바꿀 컬럼명" 

(일부의 컬럼명만 바꿀때 and 컬럼명으로)

# 일부의 인덱스명만 바꿀때 and 인덱스 번호로
df.index.values[0] = "New A0"

 

 

 

오류발생 !!

# 'int' object has no attribute 'index'
# invalid literal for int() with base 10: 'New A0'

 

  • 1-4 컬렴을(열)을 인덱스로 만들기
df1 = df.set_index("Old A")
df1

 

 

 

2.  컬럼명 명 바꾸기

-> 인덱스랑 똑같다. 'Index 대신 'columns'로 바꾸면 끝

 

  • 1- 1  df.column 을 통해서 바꾸기  

(모든 컬럼명을 바꿔야 할때만)

* column 의 파라미터인 리스트형태로 써줌

df.columns = ["New A", "New B", "New C"] # 이미 생성된 컬럼수와 입력하는 컬럼수가 같아야함
df

 

 

  • 1- 2 df.rename(columns = {"원래이름" : "바꿀이름" }, option)   

(일부의 컬럼명만 바꿀때 and 컬럼명으로)

 * rename의 파라미터인 딕셔너리 형태로 써줌

# 일부의 컬럼명만 바꿀때 and 컬럼명으로
df.rename(columns = {"Old A": "New A1", "Old B": "New B1"}) 
# df.rename({"Old A": "New A1", "Old B": "New B1"}, axis =1)

# axis= 1 은 컬럼(열)

# rename() 함수에서는 lambda 사용가능
df.rename(columns= lambda x:'[' + x +']' )

 

option : inplace = True (기존값에 저장)   

 

  • 1-3 df.columns.values[컬럼번호] = "바꿀 컬럼명" 

(일부의 컬럼명만 바꿀때 and 컬럼명으로)

# 일부의 컬럼명만 바꿀때 and 컬럼 번호로
df.columns.values[0] = "New A1"

 

 

3.  데이터 값 변경

CRUD에서 R과 똑같음

https://itcreator.tistory.com/143

# https://itcreator.tistory.com/143    3-1번 

titan_df.loc[0,'Pclass']  # 3이 출력됐었음

# " = " 만 넣으면 끝
titan_df.loc[0,'Pclass'] = 999999  # 3에서 999999로 바뀜

 

 

4. 조건으로 데이터 값 변경하기 

- lamda

# st['default'] = st['default'].apply(lambda x : 0 if x == 'No' else 1)
# st

 

5. replace

df.replace('현재 문자열', '바꿀 문자열', inplace = True) # inplace = True : 원본도 바꿈


# 여러개 바꿀때는 Key-Value 형태로 가능 
df.replace({'현재 문자열1':'바꿀 문자열 1', '현재문자열2':' 바꿀 문자열 2'})


# 하나의 컬럼에서 바꿀때
df.replace({'컬럼이름': {'찾을 문자열': '대체 문자열'}}

+ Recent posts