map(func, iterable)
- func: 적용할 함수
- iterable: func을 적용할 iterable 데이터(list)
data = [1, 2, 3, 4, 5]
def add_2(x):
result = x + 2
return result
1.1) for문 사용
result = []
for n in data:
result.append(add_2(n))
print(result)
>>> [3, 4, 5, 6, 7]
1.2) Comprehension 사용
result = [add_2(n) for n in data]
print(result)
>>> [3, 4, 5, 6, 7]
2.1) 사용자 정의 함수 사용
list(map(add_2, data))
>>> [3, 4, 5, 6, 7]
2.2) Lambda 사용
list(map(lambda x:x+2, data))
>>> [3, 4, 5, 6, 7]
2.3) Lambda 사용 + 조건 설정
# x*10의 값들 반환 단, x%2 == 0 조건을 만족한 x만 * 10을 적용
list(map(lambda x: x*10 if x % 2 == 0 else x, data))
>>> [1, 20, 3, 40, 5]
1) apply 함수와 같은 방식으로 사용해 column을 변경/추가해 줄 수 있음
2) dictionary type의 값을 직접 전달해 값으로 변경해 줄 수 있음
import pandas as pd
data_list = [['A', 'Math'],
['B', 'Psychology'],
['C', 'Computer'],
['E', 'Communication'],
['D', 'Language']]
df = pd.DataFrame(data_list, columns = ['Name', 'Major'])
df
>>>
Name Major
0 A Math
1 B Psychology
2 C Computer
3 E Communication
4 D Language
3.1) apply 함수 처럼 사용
df['Name_double'] = df['Name'].map(lambda x: x*2)
df
>>>
Name Major Name_double
0 A Math AA
1 B Psychology BB
2 C Computer CC
3 E Communication EE
4 D Language DD
3.2) dictionary 값 전달
mapping = {'Math': '01',
'Psychology': '02',
'Computer': '03',
'Communication': '04',
'Language': '05'}
df['Major_code'] = df['Major'].map(mapping)
df
>>>
Name Major Name_double Major_code
0 A Math AA 01
1 B Psychology BB 02
2 C Computer CC 03
3 E Communication EE 04
4 D Language DD 05