最終更新日: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ファイルを読み込んで例を挙げます。
合致した文字だけでなく、要素全体を新しい値で書き換える点に注意してください。
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のスタイルインデックスのコードから、市場を特定するような場合です。