Добавить значение в столбце в начало другого столбца, содержащего список

#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']