Мой фрейм данных выглядит так:
df = pd.DataFrame({'col1': [1, 2, 3 ,4 , 5, 6], 'txt': [[2354],[103, 132, 2457],[132, 1476, 6587],[103, 2457],[103, 1476, 2354], np.nan]})
col1 txt
0 1 [2354]
1 2 [103, 132, 2457]
2 3 [132, 1476, 6587]
3 4 [103, 2457]
4 5 [103, 1476, 2354]
5 6 NaN
Столбец «txt» содержит массив или NaN в каждой ячейке.
Теперь я хотел бы сохранить структуру фрейма данных как есть, но массивы должны быть строкой, содержащей все элементы, разделенные запятыми.
Обязательный вывод (со строкой вместо массива):
col1 txt
0 1 2354
1 2 103, 132, 2457
2 3 132, 1476, 6587
3 4 103, 2457
4 5 103, 1476, 2354
5 6 NaN
Решения, которые я нашел, не работали для столбца.
Спасибо.






Используйте понимание списка только в отфильтрованных строках - если нет пропущенных значений, но также необходимо преобразовать все числовые столбцы в строки - с помощью map или при преобразовании генератора в строку:
mask = df['txt'].notnull()
df.loc[mask, 'txt'] = [', '.join(map(str, x)) for x in df.loc[mask, 'txt']]
#alternative solution
#df.loc[mask, 'txt'] = df.loc[mask, 'txt'].apply(lambda x: ', '.join(map(str, x)))
#another solution
#df.loc[mask, 'txt'] = [', '.join(str(i) for i in x) for x in df.loc[mask, 'txt']]
print (df)
col1 txt
0 1 2354
1 2 103, 132, 2457
2 3 132, 1476, 6587
3 4 103, 2457
4 5 103, 1476, 2354
5 6 NaN
как всегда идеально! Спасибо! :)