Выберите столбцы транзакции и получите данные до второго последнего ненулевого значения и объедините.
df.filter(regex='trans_')
.apply(lambda x: x.iloc[x.nonzero()].iloc[:-1], axis=1)
.add(' ')
.sum(axis=1)
.str.strip()
ИЛИ
df.filter(regex='trans_')
.apply(lambda x: ' '.join(x.iloc[x.nonzero()].iloc[:-1]), axis=1)
ПРИМЕЧАНИЕ
Убедитесь, что все нули являются целыми нулями, а не строковыми нулями, т.е. 0
, а не '0'
df = df.replace({'0': 0})