データフレームの文字列を正規表現で、該当した行の列をmergeしたい
こちらに質問させていただいた、
python pandas 2つのcsvの共通の列の値を使って結合したい
で、データフレームの結合が出来ました、ありがとうございます。
この結合されたデータフレームに対して、文字列の検索と置き換えがしたいです。
前の質問の続きなので使いまわしていますが、今回の質問ではidとvalueは考慮しなくて良いのでここでは非表示としました。
ただし、データとしては存在しますので、最終的な結果としてこれらも取得できる状態であることが前提です。
[df]
param1
Value-1
VAlue-2
dF3-3
NAN
Value-1
dF3-1
...
に対し、文字列置き換え専用のルールを書いてあるreplace_csvを使って内容を置き換えます。
replace_csvをデータフレームに直すと、以下のような内容が得られます。
replace_df = pd.read_csv('replace_csv')
[replace_df]
target, param2
*-1, replace-A
*-2, replace-B
...
期待する結果
[new_df]
param1,param2
Value-1,replace-A
VAlue-2,replace-B
dF3-3,NaN
NAN,NaN
Value-1,replace-A
dF3-1,replace-A
[実装イメージ]
# df['param2']にreplace_df.targetのルールに対応したreplace_df.param2を入れたい
df['param2'] = replace_df[df.param1.str.contains(replace_df.target)].param2
このコードだと当然エラーになりますが、やりたい事のニュアンスが伝われば幸いです。
なお、replace_csvのtargetは自分で作っているので、正規表現を使わない方法で実装出来れば*
を外すこともできます。
が、replace_csvがどういう役割を持っているのか見えた方がいいと思うので、できれば*
はつけておきたいです。(カッコはアスタリスクが見えなくなるので表示のため使用)
この場合、どのように実装するのが良いでしょうか?
先の質問と同じくfor ~ sqldfを使わない方法を考えたいです。