Pandas DataFrame에서 열 값 바꾸기
-
map()메서드를 사용하여 Pandas에서 열 값 바꾸기 -
loc메서드를 사용하여 Pandas에서 열 값 바꾸기 - Pandas DataFrame에서 열 값을 조건으로 바꾸기
-
replace()메서드를 사용하여 값 수정
이 튜토리얼에서는 Pandas DataFrame에서 열 값을 바꾸는 방법을 소개합니다. 열 값을 쉽게 대체 할 수있는 세 가지 다른 함수를 다룰 것입니다.
map()메서드를 사용하여 Pandas에서 열 값 바꾸기
DataFrame의 열은 Pandas Series입니다. map 메소드를 사용하여 열의 각 값을 다른 값으로 바꿀 수 있습니다.
Series.map()구문
Series.map(arg, na_action=None)
- 매개 변수 :
arg:이 매개 변수는Series를 매핑하는 데 사용됩니다. 컬렉션이나 함수가 될 수 있습니다.na_action:NaN(Not a Number) 값을 처리하는 데 사용됩니다.None또는ignore의 두 가지 값을 사용할 수 있습니다. 기본값은None이고map()은Nan값을 포함한 모든 값에 매핑을 적용합니다.ignore는NaN값을 매핑 메소드로 전달하지 않고 열에있는 그대로 둡니다.
동일한 인덱스를 가진Series를 반환합니다.
이제map 메소드를 구현하는 예를 들어 보겠습니다. 아래 예제에서 동일한DataFrame을 사용합니다.
import pandas as pd
import numpy as np
data = {
"name": ["michael", "louis", "jack", "jasmine"],
"city": ["berlin", "paris", "roma", np.nan],
}
df = pd.DataFrame(data, columns=["name", "city"])
print(df)
출력:
name city
0 michael berlin
1 louis paris
2 jack roma
3 jasmine NaN
Pandas DataFrame에서 열 값을 컬렉션으로 바꾸기
import pandas as pd
import numpy as np
data = {
"name": ["michael", "louis", "jack", "jasmine"],
"city": ["berlin", "paris", "roma", np.nan],
}
df = pd.DataFrame(data, columns=["name", "city"])
# replace column values with collection
df["city"] = df["city"].map(
{"berlin": "dubai", "paris": "moscow", "roma": "milan", np.nan: "NY"},
na_action=None,
)
print(df)
출력:
name city
0 michael dubai
1 louis moscow
2 jack milan
3 jasmine NY
원래 DataFrame city 열 값은map()메서드의 첫 번째 매개 변수 인 사전의 새 값으로 대체됩니다.
Pandas DataFrame의 함수로 열 값 바꾸기
import pandas as pd
import numpy as np
data = {
"name": ["michael", "louis", "jack", "jasmine"],
"city": ["berlin", "paris", "roma", np.nan],
}
df = pd.DataFrame(data, columns=["name", "city"])
# replace column values with function
df["city"] = df["city"].map("I am from {}".format)
print(df)
출력:
name city
0 michael I am from berlin
1 louis I am from paris
2 jack I am from roma
3 jasmine I am from nan
na_action은 기본적으로None이므로 원래 열의NaN도 새 문자열I am from nan으로 대체됩니다.
NaN을 유지하고 싶지만 교체하지 않으려면na_action을ignore로 설정할 수 있습니다.
import pandas as pd
import numpy as np
data = {
"name": ["michael", "louis", "jack", "jasmine"],
"city": ["berlin", "paris", "roma", np.nan],
}
df = pd.DataFrame(data, columns=["name", "city"])
# replace column values excluding NaN
df["city"] = df["city"].map("I am from {}".format, na_action="ignore")
print(df)
출력:
name city
0 michael I am from berlin
1 louis I am from paris
2 jack I am from roma
3 jasmine NaN
loc 메서드를 사용하여 Pandas에서 열 값 바꾸기
Pandas DataFrame 열의 값을 대체하는 또 다른 방법은DataFrame의loc()메서드입니다. loc()메소드는 레이블을 통해 값에 액세스합니다.
DataFrame.loc[]구문
pandas.DataFrame.loc[condition, column_label] = new_value
- 매개 변수 :
condition: 이 매개 변수는 조건을 참으로 만드는 값을 반환합니다.column_label: 업데이트 할 대상 열을 지정하는 데 사용되는이 매개 변수
매개 변수를 통해 값을 결정한 후 new_value로 업데이트합니다.
이제loc 메소드를 구현하는 예제를 살펴 보겠습니다. 아래의DataFrame을 예로 사용하겠습니다.
import pandas as pd
data = {
"name": ["michael", "louis", "jack", "jasmine"],
"grades": [30, 70, 40, 80],
"result": ["N/A", "N/A", "N/A", "N/A"],
}
df = pd.DataFrame(data, columns=["name", "grades", "result"])
print(df)
출력:
name grades result
0 michael 30 N/A
1 louis 70 N/A
2 jack 40 N/A
3 jasmine 80 N/A
Pandas DataFrame에서 열 값을 조건으로 바꾸기
부울 조건을 사용하여 대상 요소를 지정할 수 있습니다.
import pandas as pd
data = {
"name": ["michael", "louis", "jack", "jasmine"],
"grades": [30, 70, 40, 80],
"result": ["N/A", "N/A", "N/A", "N/A"],
}
df = pd.DataFrame(data, columns=["name", "grades", "result"])
df.loc[df.grades > 50, "result"] = "success"
df.loc[df.grades < 50, "result"] = "fail"
print(df)
출력:
name grades result
0 michael 30 fail
1 louis 70 success
2 jack 40 fail
3 jasmine 80 success
df.loc[df.grades>50, 'result']='success'는 값이 50보다 크면grades 열의 값을sucess로 바꿉니다.
df.loc[df.grades<50,'result']='fail'은 값이 50보다 작은 경우grades 열의 값을fail로 바꿉니다.
replace()메서드를 사용하여 값 수정
Pandas DataFrame에서 열 값을 바꾸는 또 다른 방법은Series.replace()메서드입니다.
Series.replace()구문
- 하나의 단일 값 바꾸기
df[column_name].replace([old_value], new_value)
- 여러 값을 동일한 값으로 대체
df[column_name].replace([old_value1, old_value2, old_value3], new_value)
- 여러 값을 여러 값으로 바꾸기
df[column_name].replace(
[old_value1, old_value2, old_value3], [new_value1, new_value2, new_value3]
)
- 값을 전체 DataFrame의 새 값으로 교체
df.replace([old_value], new_value)
나머지 예제에서는 아래 DataFrame을 사용합니다.
import pandas as pd
data = {
"name": ["michael", "louis", "jack", "jasmine"],
"salary": [700, 800, 1000, 1200],
}
df = pd.DataFrame(data, columns=["name", "salary"])
print(df)
출력:
name salary
0 michael 700
1 louis 800
2 jack 1000
3 jasmine 1200
Pandas DataFrame에서 열 값을 여러 값으로 바꾸기
import pandas as pd
data = {
"name": ["michael", "louis", "jack", "jasmine"],
"salary": [700, 800, 1000, 1200],
}
df = pd.DataFrame(data, columns=["name", "salary"])
df["name"] = df["name"].replace(["michael", "louis"], ["karl", "lionel"])
print(df)
출력:
name salary
0 karl 700
1 lionel 800
2 jack 1000
3 jasmine 1200
Pandas DataFrame에서 열 값만 동일한 값으로 바꾸기
import pandas as pd
data = {
"name": ["michael", "louis", "jack", "jasmine"],
"salary": [700, 800, 1000, 1200],
}
df = pd.DataFrame(data, columns=["name", "salary"])
df["salary"] = df["salary"].replace([1000, 1200], 1500)
print(df)
출력:
name salary
0 karl 700
1 lionel 800
2 jack 1500
3 jasmine 1500
Pandas DataFrame에서 열 값을 하나의 값으로 바꾸기
import pandas as pd
data = {
"name": ["michael", "louis", "jack", "jasmine"],
"salary": [700, 800, 1000, 1200],
}
df = pd.DataFrame(data, columns=["name", "salary"])
df["salary"] = df["salary"].replace([700], 750)
print(df)
출력:
name salary
0 karl 750
1 lionel 800
2 jack 1000
3 jasmine 1200
전체 Pandas DataFrame의 값 바꾸기
import pandas as pd
data = {
"name": ["michael", "louis", "jack", "jasmine"],
"salary": [700, 800, 1000, 1000],
}
df = pd.DataFrame(data, columns=["name", "salary"])
df = df.replace([1000], 1400)
print(df)
출력:
name salary
0 karl 750
1 lionel 800
2 jack 1400
3 jasmine 1400