結合してからダミー変数化して、再度分割するサンプルを以下に記載しました。
コード
python
1import pandas as pd
2from sklearn.model_selection import train_test_split
3
4train = pd.DataFrame({"A": [1, 2, 3], "B": ["x", "y", "z"]})
5test = pd.DataFrame({"A": [1, 2, 3], "B": ["x", "y", "t"]})
6
7# 行方向で結合する。
8merged = pd.concat([train, test])
9print(merged)
10# A B
11# 0 1 x
12# 1 2 y
13# 2 3 z
14# 0 1 x
15# 1 2 y
16# 2 3 t
17
18# 列 B をダミー変数化
19merged = pd.get_dummies(merged, columns=["B"])
20print(merged)
21# A B_t B_x B_y B_z
22# 0 1 0 1 0 0
23# 1 2 0 0 1 0
24# 2 3 0 0 0 1
25# 0 1 0 1 0 0
26# 1 2 0 0 1 0
27# 2 3 1 0 0 0
28
29# 学習データ、テストデータに分ける。
30train, test = train_test_split(merged, test_size=0.2)
31print(train)
32# A B_t B_x B_y B_z
33# 2 3 0 0 0 1
34# 1 2 0 0 1 0
35# 0 1 0 1 0 0
36# 1 2 0 0 1 0
37print(test)
38# A B_t B_x B_y B_z
39# 0 1 0 1 0 0
40# 2 3 1 0 0 0
参考文献