replace と正規表現

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 の正規表現を使う

DataFrameで部分一致で文字列を置換

にあるように

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
と変換することができる