何がしたいか
とあるシステムがエラーを吐いたときに、そのerr_codeと、どのsystemがエラーを吐いたか、そしてそのエラーに対するdescriptionがなにかを記録したDataframeが生成されるとします。
しかし、このDataframeのdescriptionは穴抜け(None
)になっている場合があります。
そこで、リファレンスとなるdf2(err_codeとsystemとdescriptionが完璧に記述されていて、None
が無いDataframe)を使って補完します。
コード
import pandas as pd
df1 = pd.DataFrame(
data={'err_code': ['A000', 'B000', 'A000'],
'system': ['a', 'a', 'c'],
'description': [None, None, 'this error is sytax error of c']}
# df1は他に列がある計測データ
)
df2 = pd.DataFrame(
data={'err_code': ['A000', 'B000', 'A000', 'A000'],
'system': ['a', 'a', 'b', 'c'],
'description': ['this error is sytax error', 'this error is value error',
'this error is sytax error of b', 'this error is sytax error of c']}
# df2は辞典のような(リファレンスとなる)データ
)
## 列1と列2のdtcとsystemが一致するもののみを抜き出す
# まずはerr_codeとsystemで一意となるように合体させる
df3 = pd.merge(df1, df2, how='left', on=['err_code', 'system'])
# 次に、fillnaを使って、descriptionが無い列をdf2のdescriptionで補完する
df3['description_x'].fillna(df3['description_y'], inplace=True)