Pandas Series.map() 関数
Minahil Noor
2023年1月30日
-
pandas.Series.map()
の構文 -
コード例:
Series.map()
-
コード例:辞書を
arg
パラメーターとして渡すためのSeries.map()
-
コード例:関数を
arg
パラメーターとして渡すためのSeries.map()
-
コード例:
Series.map()
を DataFrame に適用するには
Python Pandas Series.map()
関数は Series
の値を置換します。置換された値は、Series
、辞書、関数のいずれかから取得することができます。この関数は Series
に対してのみ動作します。この関数を DataFrame
に適用すると、AttributeError
が発生します。
pandas.Series.map()
の構文
Series.map(arg, na_action=None)
パラメータ
arg |
これは関数、dictionary 、または Series です。置換される値はこの関数, dictionary 、Series から派生したものです。 |
na_action |
このパラメータには 2つの値を指定することができます。None と ignore の 2つの値を指定することができます。デフォルト値は None です。ignore が指定された場合、派生値を NaN 値にマッピングしません。NaN 値は無視されます。 |
戻り値
呼び出し元と同じインデックスを持つ Series
を返します。
コード例:Series.map()
パラメータ na_action
を渡した後の出力を確認するために、NaN
の値を含む Series
を生成します。
import pandas as pd
import numpy as np
series = pd.Series(['Rose',
'Lili',
'Tulip',
np.NaN,
'Orchid',
'Hibiscus',
'Jasmine',
'Daffodil',
np.NaN ,
'SunFlower',
'Daisy'])
print(series)
Series
例は以下のようになります。
0 Rose
1 Lili
2 Tulip
3 NaN
4 Orchid
5 Hibiscus
6 Jasmine
7 Daffodil
8 NaN
9 SunFlower
10 Daisy
dtype: object
NaN
の値を生成するには NumPy
を使用します。
パラメータ arg
は必須のパラメータです。これが渡されなかった場合、関数は TypeError
を生成します。まず、arg
パラメータに系列を渡します。
2つの系列をマッピングするには、最初の系列の最後の列が 2 番目の系列のインデックスと同じでなければなりません。
import pandas as pd
import numpy as np
first_series = pd.Series(
[
"Rose",
"Lili",
"Tulip",
np.NaN,
"Orchid",
"Hibiscus",
"Jasmine",
"Daffodil",
np.NaN,
"SunFlower",
"Daisy",
]
)
second_series = pd.Series(
[23, 34, 67, 90, 21, 45, 29, 70, 56],
index=[
"Rose",
"Lili",
"Tulip",
"Orchid",
"Hibiscus",
"Jasmine",
"Daffodil",
"SunFlower",
"Daisy",
],
)
series1 = first_series.map(second_series)
print(series1)
出力:
0 23.0
1 34.0
2 67.0
3 NaN
4 90.0
5 21.0
6 45.0
7 29.0
8 NaN
9 70.0
10 56.0
dtype: float64
この関数は 2つの Series
を比較した後に値を置換していることに注意してください。
コード例:辞書を arg
パラメーターとして渡すための Series.map()
import pandas as pd
import numpy as np
series = pd.Series(
[
"Rose",
"Lili",
"Tulip",
np.NaN,
"Orchid",
"Hibiscus",
"Jasmine",
"Daffodil",
np.NaN,
"SunFlower",
"Daisy",
]
)
dictionary = {
"Rose": "One",
"Lili": "Two",
"Orchid": "Three",
"Jasmine": "Four",
"Daisy": "Five",
}
series1 = series.map(dictionary)
print(series1)
出力:
0 One
1 Two
2 NaN
3 NaN
4 Three
5 NaN
6 Four
7 NaN
8 NaN
9 NaN
10 Five
dtype: object
辞書にない Series
の値は NaN
の値に置き換えられます。
コード例:関数を arg
パラメーターとして渡すための Series.map()
ここでは、パラメータとして関数を渡します。
import pandas as pd
import numpy as np
series = pd.Series(
[
"Rose",
"Lili",
"Tulip",
np.NaN,
"Orchid",
"Hibiscus",
"Jasmine",
"Daffodil",
np.NaN,
"SunFlower",
"Daisy",
]
)
series1 = series.map("The name of the flower is {}.".format)
print(series1)
出力:
0 The name of the flower is Rose.
1 The name of the flower is Lili.
2 The name of the flower is Tulip.
3 The name of the flower is nan.
4 The name of the flower is Orchid.
5 The name of the flower is Hibiscus.
6 The name of the flower is Jasmine.
7 The name of the flower is Daffodil.
8 The name of the flower is nan.
9 The name of the flower is SunFlower.
10 The name of the flower is Daisy.
dtype: object
ここでは、パラメータとして string.format()
関数を渡しています。この関数は NaN
の値にも適用されていることに注意してください。この関数を NaN の値に適用したくない場合は、na_action
パラメータに ignore
の値を渡します。
import pandas as pd
import numpy as np
series = pd.Series(
[
"Rose",
"Lili",
"Tulip",
np.NaN,
"Orchid",
"Hibiscus",
"Jasmine",
"Daffodil",
np.NaN,
"SunFlower",
"Daisy",
]
)
series1 = series.map("The name of the flower is {}.".format, na_action="ignore")
print(series1)
出力:
0 The name of the flower is Rose.
1 The name of the flower is Lili.
2 The name of the flower is Tulip.
3 NaN
4 The name of the flower is Orchid.
5 The name of the flower is Hibiscus.
6 The name of the flower is Jasmine.
7 The name of the flower is Daffodil.
8 NaN
9 The name of the flower is SunFlower.
10 The name of the flower is Daisy.
dtype: object
上の例では NaN
の値を無視しています。
コード例:Series.map()
を DataFrame に適用するには
import pandas as pd
dataframe = pd.DataFrame(
{
"Attendance": {0: 60, 1: 100, 2: 80, 3: 75, 4: 95},
"Name": {0: "Olivia", 1: "John", 2: "Laura", 3: "Ben", 4: "Kevin"},
"Obtained Marks": {0: 56, 1: 75, 2: 82, 3: 64, 4: 67},
}
)
dataframe1 = dataframe.map("The flower name is {}.".format)
print(dataframe1)
出力:
AttributeError: 'DataFrame' object has no attribute 'map'
この関数は AttributeError
を生成しました。