Python: преобразовать каждый массив в ячейке столбца в одну строку

Мой фрейм данных выглядит так:

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

Решения, которые я нашел, не работали для столбца.

Спасибо.

Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
1
0
625
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Используйте понимание списка только в отфильтрованных строках - если нет пропущенных значений, но также необходимо преобразовать все числовые столбцы в строки - с помощью 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

как всегда идеально! Спасибо! :)

MaMo 19.10.2018 13:28

Другие вопросы по теме