EXCELのVLOOLUPで行っているような処理をPythonに置き換えたい
下記のような2つのデータフレームを特定の条件で抽出し、
複数列の値を更新したいと考えています。
動作はしているようなのですが、更新したい列がもっと多い場合など
この書き方はあまり美しくないような気がしています。
抽出したデータに対し、列ごとに特定の値で更新をしたい場合
なにか他に良い方法はありますでしょうか?
そもそもPandasの利用が適切なのかどうかについてなども、ご教授いただければと思います。
df_1
|col1|col2|col3|col4|
|:--|:--:|--:|
|a|1|0||
|b|2|0||
|c|3|1||
|d|4|0||
df_2
col1 | col5 |
---|---|
a | 1 |
b | 2 |
d | 4 |
df_3 = pd.merge(df_1, df_2, on='col1', how='left')
df_3
|col1|col2|col3|col4|col5|
|:--|:--:|--:|
|a|1|0|0||
|b|2|0|0||
|c|3|1|1||
|d|4|0|0||
パターン①
df_3 = df_3[df_3['col3'] == 0] # 条件を指定 df_3['col4'] = 99 # 値を更新 df_3['col5'] = 'xx' # 値を更新
パターン②
df_3.loc[df_3['col3'] == 0, 'col4'] = 99 df_3.loc[df_3['col3'] == 0, 'col5'] = 'xx' df_3[df_3['col3'] == 0]
df_3
|col1|col2|col3|col4|col5|
|:--|:--:|--:|
|a|1|0|99|xx|
|b|2|0|99|xx|
|d|4|0|99|xx|
最終的に上記の結果をCSVファイルへ出力したいです。
あなたの回答
tips
プレビュー