#python #python-3.x #pandas #dataframe #lambda
#python #python-3.x #pandas #фрейм данных #лямбда
Вопрос:
У меня есть фрейм данных, который содержит следующие значения
Keyword Synonyms
0 fuzz [hair, copper, pig, bull, cop, blur]
1 napkins [table]
2 rationalizations [systematization, rationalization]
3 grandmasters [grandmaster]
4 rehearsing [practice]
Для создания выпадающего меню на более позднем этапе, как мне добавить значение в столбце ключевого слова в начало каждого списка в столбце синонимов?
Мой код выглядит так:
df['Synonyms'] = pd.concat([df['Keyword'].append(df['Synonyms'])
Комментарии:
1. Каков ожидаемый результат?
2. @Wen-Ben, думаю, они хотят сохранить столбец списка, но добавить ключевое слово в качестве первого элемента в каждый список в синониме. Возможно, это не обман, но взгляните еще раз.
3. @coldspeed не стесняйтесь добавлять свое решение и снова открывать его
Ответ №1:
Как насчет понимания списка? В python3 вы можете использовать расширенную итеративную распаковку для эффективного создания нового списка.
# df['Synonyms'] = [[x, *y] for x, y in df[['Keyword'], 'Synonyms']].values]
df['Synonyms'] = [[x, *y] for x, y in zip(df['Keyword'], df['Synonyms'])]
df
Keyword Synonyms
0 fuzz [fuzz, hair, copper, pig, bull, cop, blur]
1 napkins [napkins, table]
2 rationalizations [rationalizations, systematization, rationaliz...
3 grandmasters [grandmasters, grandmaster]
4 rehearsing [rehearsing, practice]
Вот забавная альтернатива с map
:
k = iter(df['Keyword'].tolist())
df['Synonyms'] = df['Synonyms'].map(lambda x: [next(k), *x])
df
Keyword Synonyms
0 fuzz [fuzz, hair, copper, pig, bull, cop, blur]
1 napkins [napkins, table]
2 rationalizations [rationalizations, systematization, rationaliz...
3 grandmasters [grandmasters, grandmaster]
4 rehearsing [rehearsing, practice]
Комментарии:
1. Это феноменальное решение! Спасибо cs95.
Ответ №2:
Если это так
df['Keyword'].apply(lambda x : [x]) df['Synonyms']