Из do c из pandas .DataFrame.apply :
'broadcast': результаты будут транслироваться в исходную форму DataFrame, исходный индекс и столбцы будут сохранены.
Итак, проблема в том, что исходная форма вашего фрейма данных (3, 3), а результат вашей функции apply - 2 столбца, поэтому у вас есть несоответствие . и это также объясняет, почему, когда вы удаляете "From_To", новая форма - (3, 2), и теперь у вас есть совпадение ...
Вы можете использовать 'broadcast' вместо 'expand', и вы будет ваш ожидаемый результат.
table = [
['1_john', 23, 'LoNDon_paris'],
['2_bob', 34, 'Madrid_milan'],
['3_abdellah', 26, 'Paris_Stockhom']
]
df = pd.DataFrame(table, columns=['ID_Name', 'Score', 'From_to'])
df[['ID','Name']] = df.apply(lambda x: get_first_last(x['ID_Name']), axis=1, result_type='expand')
надеюсь, что это поможет !!