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