のパンダのドキュメントにreplace
は例がないので、ここでいくつか紹介します。私のようにRの観点から来た人にとっては、基本的にはR関数とのreplace
機能を組み合わせた万能の置換関数です。DSMは単一値の場合をカバーしているので、複数値の場合をカバーします。plyr::mapvalues
plyr::revalue
stringr::str_replace_all
シリーズ例
In [10]: x = pd.Series([1, 2, 3, 4])
In [11]: x
Out[11]:
0 1
1 2
2 3
3 4
dtype: int64
正の整数を負の整数に置き換えたい(-1を掛けることではない)。
値の2つのリスト
これを行う1つの方法は、置き換えたい値の1つのリスト(またはパンダシリーズ)と、それらを置き換えたい値の2番目のリストを用意することです。
In [14]: x.replace([1, 2, 3, 4], [-1, -2, -3, -4])
Out[14]:
0 -1
1 -2
2 -3
3 -4
dtype: int64
これはに対応しplyr::mapvalues
ます。
値のペアの辞書
値のペアのディクショナリがある方が便利な場合があります。インデックスは私たちが置き換えるものであり、値は私たちがそれを置き換えるものです。
In [15]: x.replace({1: -1, 2: -2, 3: -3, 4: -4})
Out[15]:
0 -1
1 -2
2 -3
3 -4
dtype: int64
これはに対応しplyr::revalue
ます。
文字列
正規表現パターンを使用するオプションもあることを除いて、文字列に対しても同様に機能します。
文字列を他の文字列に置き換えるだけの場合は、以前とまったく同じように機能します。
In [18]: s = pd.Series(["ape", "monkey", "seagull"])
In [22]: s
Out[22]:
0 ape
1 monkey
2 seagull
dtype: object
2つのリスト
In [25]: s.replace(["ape", "monkey"], ["lion", "panda"])
Out[25]:
0 lion
1 panda
2 seagull
dtype: object
辞書
In [26]: s.replace({"ape": "lion", "monkey": "panda"})
Out[26]:
0 lion
1 panda
2 seagull
dtype: object
正規表現
a
すべてのsをsに置き換えますx
。
In [27]: s.replace("a", "x", regex=True)
Out[27]:
0 xpe
1 monkey
2 sexgull
dtype: object
l
すべてのsをsに置き換えますx
。
In [28]: s.replace("l", "x", regex=True)
Out[28]:
0 ape
1 monkey
2 seaguxx
dtype: object
l
の両方seagull
が置き換えられたことに注意してください。
a
sをx
sに、l
sをp
sに置き換えます
In [29]: s.replace(["a", "l"], ["x", "p"], regex=True)
Out[29]:
0 xpe
1 monkey
2 sexgupp
dtype: object
複数の異なる値を同じ値で置き換えたいという特殊なケースでは、置き換えとして1つの文字列を使用するだけで済みます。リスト内に含めることはできません。a
sとl
sをp
sに置き換えます
In [29]: s.replace(["a", "l"], "p", regex=True)
Out[29]:
0 ppe
1 monkey
2 sepgupp
dtype: object
(コメントのDaveL17へのクレジット)