#python #pandas
Вопрос:
Как я могу преобразовать обычный столбец в столбец списка во фрейме pandas
данных? Я пробовал что-то подобное, но это не работает:
df['popular_tags'] = df['popular_tags'].to_list()
В настоящее время колонка выглядит следующим образом:
df['popular_tags'] 0 'A', 'B', 'C' 1 'A', 'B', 'C'
Ожидаемым результатом будет столбец списка, например:
df['popular_tags'] 0 ['A', 'B', 'C'] 1 ['E', 'F', 'G']
Комментарии:
1. Как выглядит ожидаемый результат?
2. Привет @mcsoini, я отредактировал сообщение. Я просто хочу, чтобы столбец в фрейме данных был столбцом списка.
3. как это выглядит в настоящее время?
4.
.map(list)
должно сработать
Ответ №1:
df = pd.DataFrame({'Popular Tags': ["'A', 'B', 'C'", "'E', 'F', 'G'"]}) print(df) Popular Tags 0 'A', 'B', 'C' 1 'E', 'F', 'G' df['Popular Tags']= df['Popular Tags'].astype('object') df['Popular Tags'] = df['Popular Tags'].apply(lambda x: x.split(', ')) print(df) Popular Tags 0 ['A', 'B', 'C'] 1 ['E', 'F', 'G']
Комментарии:
1. Спасибо, это то, о чем я думал. Однако, я получаю ошибку, которая
'float' object has no attribute 'split'
.2. @salix это потому, что в столбце есть некоторые значения с плавающей
popular_tags
точкой. Вам следует либо избавиться от них, либо сначала попытаться преобразовать их в строки:df['popular_tags'].astype('str').str.split(', ')
.3. @salix_august, пожалуйста, проверьте мой ответ — это, вероятно, быстрее.
Ответ №2:
Очень просто:
df['popular_tags'] = df['popular_tags'].str.split(', ')
Выход:
gt;gt;gt; df popular_tags 0 ['A', 'B', 'C'] 1 ['A', 'B', 'C']