Python Library/Pandas

[Pandas - Python] Transforming Data Using a Function or Mapping - map() (함수나 매핑을 이용한 데이터 변환)

바보1 2022. 6. 13. 23:50

Transforming Data Using a Function or Mapping - map()

 

data = pd.DataFrame({'food': ['bacon', 'pulled pork', 'bacon',
                              'Pastrami', 'corned beef', 'Bacon',
                              'pastrami', 'honey ham', 'nova lox'],
                     'ounces': [4, 3, 12, 6, 7.5, 8, 3, 5, 6]})
data


	food		ounces
0	bacon		4.0
1	pulled pork	3.0
2	bacon		12.0
3	Pastrami	6.0
4	corned beef	7.5
5	Bacon		8.0
6	pastrami	3.0
7	honey ham	5.0
8	nova lox	6.0
meat_to_animal = {
  'bacon': 'pig',
  'pulled pork': 'pig',
  'pastrami': 'cow',
  'corned beef': 'cow',
  'honey ham': 'pig',
  'nova lox': 'salmon'
}

모든 데이터가 준비되었습니다.

 

우선 Food column의 모든 글을 소문자로 바꿉시다.

lowercased = data['food'].str.lower()
lowercased

0          bacon
1    pulled pork
2          bacon
3       pastrami
4    corned beef
5          bacon
6       pastrami
7      honey ham
8       nova lox
Name: food, dtype: object

그리고 이제 map을 이용해서, meat_to_animal 값과 일치시켜 줍시다.

data['animal'] = lowercased.map(meat_to_animal)
data


	food		ounces	animal
0	bacon		4.0	pig
1	pulled pork	3.0	pig
2	bacon		12.0	pig
3	Pastrami	6.0	cow
4	corned beef	7.5	cow
5	Bacon		8.0	pig
6	pastrami	3.0	cow
7	honey ham	5.0	pig
8	nova lox	6.0	salmon

보기 불편하네요 ㅜ

 

이때 다른 방식으로도 food column에 있는 값과 meat_to_animal 값을 일치시켜 줄 수 있습니다.

data['food'].map(lambda x: meat_to_animal[x.lower()])


0       pig
1       pig
2       pig
3       cow
4       cow
5       pig
6       cow
7       pig
8    salmon
Name: food, dtype: object