replace と正規表現
import investpy economic_data = investpy.news.economic_calendar(time_zone=None, time_filter='time_only', countries=['japan', 'united states'],importances=None,categories=None,from_date='01/01/2021', to_date='11/06/2021') ISM =economic_data[economic_data['event'].str.contains('ISM Non-Manufacturing PMI')] ISM
とすると
ISM Non-Manufacturing PMI (Dec)
というように結果に
(月)
という表示が入ってしまう
これを削除するには
replace の正規表現を使う
にあるように
replace で第3引数で
regex=True
を指定することで正規表現で replace が可能になる
正規表現については
分かりやすいpythonの正規表現の例
を参考に
今回は任意の英数字なので
[a-zA-Z0-9_]
そして1回以上の繰り返しなので
+
をつかう
replace で ( を置き換え対象にするには
\(
というようにしないとダメ
ISM['event'] = ISM['event'].replace("\([a-zA-Z0-9_]+\)","",regex=True) ISM
とすれば
(Dec)
の部分が削除される
+を指定すれば繰り返しの指定ができるので
PHS =economic_data[economic_data['event'].str.contains('Pending Home Sales')] PHS
の結果で
Pending Home Sales (MoM) (Dec)
となっていても
PHS['event']=PHS['event'].replace("\([a-zA-Z0-9_]+\)+","",regex=True) PHS
とすることで
Pending Home Sales
と変換することができる