你可以用
a = df.groupby('col2').apply(lambda group: ','.join(group['col3'])) df['col3'] = df['col2'].map(a)
输出
print(df) col1 col2 col3 0 AC1 A ABC,IJK 1 AC2 B DEF,FGH 2 AC3 B DEF,FGH 3 AC4 A ABC,IJK 4 AC5 C LMN
你可以这样做
cols=df.columns[1:6] df.groupby('rating')[cols].apply(lambda x: x.ne(0).sum()).reset_index()
#
rating foo1 foo2 foo3 foo4 foo5 0 2 1 0 3 1 4 1 4 1 2 1 0 5