Something like that?
df['ColC'] = df.ColA + '>+' + df.ColB.str[0].str[0] + \ ' ' + df.ColB.str[0].str[1] + ':' + \ df.ColB.str[0].str[2] + ',+' + \ df.ColB.str[1].str[0] + ' ' + \ df.ColB.str[1].str[1] + ':' + \ df.ColB.str[1].str[2]
Output:
ColA ColB ColC 0 A [[a, b, c], [d, e, f]] A>+ab:c,+de:f 1 B [[f, g, h], [i, j, k]] B>+fg:h,+ij:k 2 A [[l, m, n], [o, p, q]] A>+lm:n,+op:q
Delays
df = pd.concat ([df] * 333)
Wen method
%% timeit df [['t1', 't2']] = df ['ColB']. apply (pd.Series) .applymap (lambda x: ('{} {}: {}'. format (x [0], x [1], x [2]))) df.ColA + '> +' + df.t1 + ', +' + df.t2
1, best 3: 363 ms per cycle
miradulo Method
%% timeit df.apply (lambda r: '{}> + {} {}: {}, + {} {}: {}'. format (* flatten (r)), axis = 1)
10 loops, best of 3: 74.9 ms per cycle
Scott Boston Method
%% timeit df.ColA + '> +' + df.ColB.str [0] .str [0] + \ '' + df.ColB.str [0] .str [1] + ':' + \ df .ColB.str [0] .str [2] + ', +' + \ df.ColB.str [1] .str [0] + '' + \ df.ColB.str [1] .str [1] + ':' + \ df.ColB.str [1] .str [2]
100 cycles, best of 3: 12.4 ms per cycle