Создание списка из столбца панд, содержащего несколько значений - PullRequest
0 голосов
/ 02 мая 2018

Давайте использовать это как пример набора данных:

    Year    Breeds
0   2009    Collie
1   2010    Shepherd
2   2011    Collie, Shepherd
3   2012    Shepherd, Retriever
4   2013    Shepherd
5   2014    Shepherd, Bulldog
6   2015    Collie, Retriever
7   2016    Retriever, Bulldog

Я хочу создать список dogs, в котором dogs содержит уникальные породы собак Collie, Shepherd, Retriever, Bulldog. Я знаю, что это так же просто, как вызвать .unique() в соответствующем столбце, но я сталкиваюсь с проблемой наличия более одного значения в столбце Breeds. Любые идеи, чтобы обойти это?

Спасибо!

1 Ответ

0 голосов
/ 02 мая 2018

EDIT:

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

df['new'] = df['Breeds'].str.split(', ')

Для уникальных значений конвертировать в set s:

df['new'] = df['Breeds'].str.split(', ').apply(lambda x: list(set(x)))

Или используйте понимание списка:

df['new'] = [list(set(x.split(', '))) for x in df['Breeds']]

Используйте findall для извлечения list и regex - | для OR, если хотите извлечь только некоторые значения:

L = ["Collie", "Shepherd", "Retriever", "Bulldog"]

df['new'] = df['Breeds'].str.findall('|'.join(L))

Если возможно, дубликаты:

df['new'] = df['Breeds'].str.findall('|'.join(L)).apply(lambda x: list(set(x)))

print (df)
   Year               Breeds                    new
0  2009               Collie               [Collie]
1  2010             Shepherd             [Shepherd]
2  2011     Collie, Shepherd     [Collie, Shepherd]
3  2012  Shepherd, Retriever  [Shepherd, Retriever]
4  2013             Shepherd             [Shepherd]
5  2014    Shepherd, Bulldog    [Shepherd, Bulldog]
6  2015    Collie, Retriever    [Collie, Retriever]
7  2016   Retriever, Bulldog   [Retriever, Bulldog]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...