Hier ist eine Implementierung, die ich sehr vielseitig finde:
In [1]: import pandas as pd
In [2]: df = pd.DataFrame([[0, 'das', 'schnelle', 'braune'],
...: [1, 'Fuchs', 'springt', 'über'],
...: [2, 'der', 'faule', 'Hund']],
...: columns=['c0', 'c1', 'c2', 'c3'])
In [3]: def str_join(df, sep, *cols):
...: from functools import reduce
...: return reduce(lambda x, y: x.astype(str).str.cat(y.astype(str), sep=sep),
...: [df[col] for col in cols])
...:
In [4]: df['cat'] = str_join(df, '-', 'c0', 'c1', 'c2', 'c3')
In [5]: df
Out[5]:
c0 c1 c2 c3 cat
0 0 das schnelle braune 0-das-schnelle-braune
1 1 Fuchs springt über 1-Fuchs-springt-über
2 2 der faule Hund 2-der-faule-Hund