как добавить новый столбец, который будет содержать список общих значений из двух списков из других столбцов - PullRequest
0 голосов
/ 20 июня 2020

Я пытаюсь установить новый столбец в моем фрейме данных, который будет содержать список совпадающих значений из двух столбцов. мой фрейм данных:

         capacity     preferences                                            applied
0          1           [150]                                                 []
1          3   [150, 116, 9]                                                 []
2          3   [150, 68, 55]  [0, 3, 4, 5, 20, 51, 54, 55, 56, 71, 102, 105,...
3          3  [150, 116, 68]              [41, 50, 92, 101, 143, 152, 194, 203]
4          3  [150, 116, 68]               [12, 48, 63, 99, 114, 150, 165, 201]
5          1           [150]               [39, 46, 90, 97, 141, 148, 192, 199]
6          1           [150]                                                 []
7          2      [150, 116]                                 [36, 87, 138, 189]
8          2      [150, 116]  [8, 9, 26, 42, 59, 60, 77, 93, 110, 111, 128, ...
9          3   [150, 116, 9]                                                 []
10         3  [150, 55, 111]               [11, 38, 62, 89, 113, 140, 164, 191]

Я пробовал:

    sup_df["accepted"] = list(set(sup_df['applied']).intersection(sup_df['preferences']))

, но получил ошибку:

TypeError: unhashable type: 'list'

, а также попробовал:

for i, r in sup_df.iterrows():
    r["accepted"] = list(set(r['applied']).intersection(r['preferences']))

но с фреймом данных ничего не произошло.

1 Ответ

0 голосов
/ 20 июня 2020

Вот способ использовать apply:

df['accepted'] = df.apply(lambda x: list(set(x['preferences']).intersection(x['applied'])), axis=1)

  preferences applied accepted
0       [150]      []       []
1    [222, 9]   [222]    [222]

Пример данных

df = pd.DataFrame({'preferences': [[150], [222,9]],
                   'applied': [[], [222]]})
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...