データフレームの一部の列において他のデータフレームの要素と一致するものを特定の番号に置き換える
以下のデータフレームの一部の列において他のデータフレームの要素と一致するものを特定の番号に置き換える方法を教えていただけないでしょうか。
import pandas as pd
import numpy as np
names = "A", "B", "C", "D"
df1 = pd.DataFrame({'Name' : names,
'Test1' : [50, "Math", "game", "game"],
'Test2' : ["English", 40, 45, "game"],
'Test3' : ["work", "movie","Japanese", 50],
'Test4' : [30,"work","movie" ,"Japanese"]}
)
df2 = pd.DataFrame({'Test' : ["English", "Math", "Japanese"],
'TestNumber' : [10, 20, 30]}
)
df1
df2
出力結果
df1
Name Test1 Test2 Test3 Test4
0 A 50 English work 30
1 B Math 40 movie work
2 C game 45 Japanese movie
3 D game game 50 Japanese
df2
Test TestNumber
0 English 10
1 Math 20
2 Japanese 30
という二つのデータフレームがあります。
(df1のイメージとして、4回の実験中1回のみ英語・数学・国語いずれかを勉強し、それ以外の3回の実験では何をして過ごしたのか睡眠をしたらその時間、その他は活動名を記録するというものです。実際はnamesもdf2のTestに相当するものも膨大にあります)
これを、df1のTest1、Test2、Test3、Test4の中でdf2のTestと一致するものだけそのTestNumberで表して最終的に
Name TestNumber Test
0 A 10 English
1 B 20 Math
2 C 30 Japanese
3 D 30 Japanese
となるようにしたいですが、方法が全く思いつきません...。
何か有効な方法はないでしょうか?
どうぞよろしくお願い致します。