【毎日Python】Pythonでシリーズの各要素に関数を適用する方法|Series.map

map
毎日Python/こつこつPython

Pythonでシリーズの各要素に関数を適用する方法です。
使用するのは、PythonのPandasライブラリのmapメソッドです。
mapメソッドでは、無名関数のlambdaやdefで作成した関数を指定して、シリーズに適用させることができます。
このようなシリーズを作成します。
片仮名とアルファベットが混在している文字列を値に設定しておきます。

import pandas as pd
ser = pd.Series(['スカートSkirt', 'ニットKnit', 'ジャケットJacket', 'シャツShirt', 'ロングパンツSlacks'])
ser

まず、ラムダ関数を使って、各値の最初の1文字を取り出してみましょう。
ラムダ関数では、引数とコロンの後に実行したい処理を指定します。
実行します。

ser.map(lambda x: x[0])

各値の最初の1文字を取得できました。
次に、各値のアルファベットの文字列のみ取得してみましょう。
正規表現を扱うreモジュールのfindallメソッドで、大文字小文字両方のアルファベットの値を取得する処理を指定します。
実行します。

import re
ser.map(lambda x: re.findall('[A-z]+', x))

アルファベットの文字列を取得できました。
最後に、format関数を使って文章を作成してみましょう。
format関数では、かっこの部分に各値の文字列に差し込むことができます。
実行します。

ser.map('{}を買います。'.format)

各値を文章にすることができました。
なお、似たメソッドでapplymapメソッドがあります。
2つのメソッドの違いは、applymapメソッドはデータフレーム、applyメソッドはシリーズに関数を適用させることができる点です。

関連メソッド

【毎日Python】Pythonでシリーズの各要素に関数を適用する方法|Serise.apply