Помимо Index.map, как объяснено выше, проблему можно решить с помощью некоторых базовых концепций с использованием следующего подхода:
df = pd.merge(df_all, df_test, how='left', on='data_index')
df.drop(['split_x'], axis=1, inplace=True)
df = df.rename(columns={'split_y': 'split'})
df.loc[df.split != 'test', 'split'] = 'train/val'
Результат, следующий за каждой строкой:
split_x split_y
data_index
0 NA NaN
1 NA NaN
2 NA NaN
3 NA test
4 NA NaN
5 NA test
6 NA NaN
split_y
data_index
0 NaN
1 NaN
2 NaN
3 test
4 NaN
5 test
6 NaN
split
data_index
0 NaN
1 NaN
2 NaN
3 test
4 NaN
5 test
6 NaN
split
data_index
0 train/val
1 train/val
2 train/val
3 test
4 train/val
5 test
6 train/val