apply
DataFrame.apply(func, axis=0)
func: 적용할 함수명
axis: 함수를 적용할 축(default: 0)
import pandas as pd
data_list = [['A', 'Math', '2002-01-05'],
['B', 'Computer', '1999-05-21'],
['C', 'Communication', '1995-07-07'],
['D', 'Language', '2000-12-04'],
['E', 'Science', '1994-03-19'],
['F', 'Math', '2001-02-08'],
['G', 'Communication', '1997-11-10'],
['H', 'Computer', '1996-09-02']]
df = pd.DataFrame(data_list, columns = ['Name', 'Major', 'Born'])
def year(value):
return value.split("-")[0]
# year의 인자(value) = df['Born']
# Born column에 존재하는 data 한 줄 한 줄에 적용(apply)해라, year(함수)를
df['Year'] = df['Born'].apply(year)
df.head(5)
>>>
Name Major Born Year
0 A Math 2002-01-05 2002
1 B Computer 1999-05-21 1999
2 C Communication 1995-07-07 1995
3 D Language 2000-12-04 2000
4 E Science 1994-03-19 1994
def age(value, current_year):
born_year = value.split("-")[0]
age = current_year - int(born_year)
return age
# age의 첫번재 인자(value) = df['Born'], 두번째 인자(current_year) = 2024
# Born column에 존재하는 data 한 줄 한 줄에 적용(apply)해라, age(함수)를
df['Age'] = df['Born'].apply(age, current_year = 2024)
df.head(5)
>>>
Name Major Born Age
0 A Math 2002-01-05 22
1 B Computer 1999-05-21 25
2 C Communication 1995-07-07 29
3 D Language 2000-12-04 24
4 E Science 1994-03-19 30
def intro(value, current_year, text):
born_year = value.split("-")[0]
age = current_year - int(born_year)
result = text + str(age)
return result
# intro의 첫번재 인자(value) = df['Born'], 두번째 인자(current_year) = 2024, 세번째 인자(text) = '안녕 내 나이는 '
# Born column에 존재하는 data 한 줄 한 줄에 적용(apply)해라, intro(함수)를
df['intro'] = df['Born'].apply(intro, current_year=2024, text='안녕 내 나이는 ')
df.head(5)
>>>
Name Major Born intro
0 A Math 2002-01-05 안녕 내 나이는 22
1 B Computer 1999-05-21 안녕 내 나이는 25
2 C Communication 1995-07-07 안녕 내 나이는 29
3 D Language 2000-12-04 안녕 내 나이는 24
4 E Science 1994-03-19 안녕 내 나이는 30
def introduce(row, current_year, start, end):
name = row['Name']
born_year = row['Born'].split("-")[0]
age = current_year - int(born_year)
major = row['Major']
result = start + name + str(age) + end + major
return result
# axis = 1 : row에 존재하는 모든 column을 활용
# df에 존재하는 data 한 줄 한 줄(axis=1)에 적용(apply)해라, introduce(함수)를
df['introduce'] = df.apply(introduce, current_year=2024, start='안녕? 내 이름은 ', end='살이고 전공은 ', axis=1)
df.head(5)
>>>
Name Major Born introduce
0 A Math 2002-01-05 안녕? 내 이름은 A22살이고 전공은 Math
1 B Computer 1999-05-21 안녕? 내 이름은 B25살이고 전공은 Computer
2 C Communication 1995-07-07 안녕? 내 이름은 C29살이고 전공은 Communication
3 D Language 2000-12-04 안녕? 내 이름은 D24살이고 전공은 Language
4 E Science 1994-03-19 안녕? 내 이름은 E30살이고 전공은 Science