Нужно DataFrameGroupBy.agg
с join
и astype
для преобразования числовых столбцов:
df = df.groupby(['id','time'], as_index=False).agg(lambda x: ' '.join(x.astype(str)))
print (df)
id time number title
0 100 02.05.2018 04 10 11 aa bb
Или преобразовать все столбцы без группировки в str
сначала:
df[df.columns.difference(['id','time'])]=df[df.columns.difference(['id','time'])].astype(str)
df = df.groupby(['id','time'], as_index=False).agg(' '.join)
print (df)
id time number title
0 100 02.05.2018 04 10 11 aa bb
Если не конвертировать, все числовые столбцы отбрасываются без вывода:
df = df.groupby(['id','time'], as_index=False).agg(' '.join)
print (df)
id time title
0 100 02.05.2018 04 aa bb
А при необходимости фильтруются только некоторые столбцы:
cols = ['number']
df = df.groupby(['id','time'], as_index=False)[cols].agg(lambda x: ' '.join(x.astype(str)))
print (df)
id time number
0 100 02.05.2018 04 10 11