Если отсутствуют значения:
my_df = pd.DataFrame({
'Imp': ['1', '2', '3'],
'Apple': ['a', 'b', 'c'],
'Pear': ['d', np.nan , np.nan ],
'Cherry': ['h', np.nan , 'j']})
my_df['new'] = my_df.iloc[:, 1:].apply(lambda x: ', '.join(x.dropna()), 1)
print (my_df)
Imp Apple Pear Cherry new
0 1 a d h a, d, h
1 2 b NaN NaN b
2 3 c NaN j c, j
или пустые строки:
my_df = pd.DataFrame({
'Imp': ['1', '2', '3'],
'Apple': ['a', 'b', 'c'],
'Pear': ['d', np.nan , np.nan ],
'Cherry': ['h', np.nan , 'j']}).fillna('')
my_df['new'] = my_df.iloc[:, 1:].apply(lambda x: ', '.join(x[x != '']), 1)
print (my_df)
Imp Apple Pear Cherry new
0 1 a d h a, d, h
1 2 b b
2 3 c j c, j