最終更新日:2021/9/13

DFの列を対象に、特定の文字を含む要素を「完全に違う文字」に置換する(書き換える)方法を説明します。
一部の文字を置換する、ではありません。要素を完全に上書きします。
大きく分けて、Aで始まる、Aで終わる、Aを含むがあります。df.map()とラムダ関数(lambda関数)を組み合わせます。

【説明すること】

  • 1. abcで始まる要素をABCで上書き(置換)
    df['clm'].map(lambda x: 'ABC' if x[:3] =='abc' else x)
  • 2. xyzで終わる要素をXYZで上書き(置換)
    df['clm'].map(lambda x: 'XYZ' if x[-3:] =='xyz' else x)
  • 3. pqrを含む要素をPQRで上書き(置換)
    df['clm'].map(lambda x: 'PQR' if 'pqr' in x else x)
  • 参考:金融でありがちな例(NKU1, TPXSM)

1. abcで始まる要素をABCで上書き(置換)

例えば、始まりが3文字の場合、ラムダ関数内のif文に最初の3文字で条件指定して、

df['clm'].map(lambda x: 'ABC' if x[:3] =='abc' else x)

と書きます。

以下のcsvファイルを読み込んで例を挙げます。

a006_002a.csv

合致した文字だけでなく、要素全体を新しい値で書き換える点に注意してください。

2. xyzで終わる要素をXYZで上書き(置換)

同様に、ラムダ関数のif文に終わりの3文字で条件指定して、

df['clm'].map(lambda x: 'XYZ' if x[-3:] =='xyz' else x)

と書きます。
要素全体を新しい値で書き換える点に注意してください。

3. pqrを含む要素をPQRで上書き(置換)

同様に、ラムダ関数のif文に終わりのinで文字を条件指定して、

df['clm'].map(lambda x: 'PQR' if 'pqr' in x else x)

と書きます。

参考:金融でありがちな例

以下のcsvファイルを使って、金融でのBloombergティッカーからの変換など、ありがちな例を挙げておきます。
先物のコードや、TOPXのスタイルインデックスのコードから、市場を特定するような場合です。

a006_002b.csv