Используйте apply
со значениями counter
и объединяйте с пробелом - сначала повторяющиеся значения, а затем вместе:
import ast
#convert values to dictionaries
df['col'] = df['col'].str.extract('\((.+)\)', expand=False).apply(ast.literal_eval)
df['new'] = df['col'].apply(lambda x: ' '.join(' '.join([k] * v) for k, v in x.items()))
print (df)
col new
0 {'First': 3, 'record': 2} First First First record record
1 {'Second': 2, 'record': 1} Second Second record
Или составление списка:
df['new'] = [' '.join(' '.join([k] * v) for k, v in x.items()) for x in df['col']]