Извлечение нескольких значений из столбца в новый столбец в пандах - PullRequest
0 голосов
/ 30 ноября 2018

У меня есть фрейм данных df с именем столбца Категория и значения внутри
Категория
Мебель
Технология
Канцелярские товары

Эти три значения повторяются, имея в общей сложности 1000 значений в столбце.Я хочу создать новое имя столбца Category_filter со значениями Мебель и Технология из столбца Категория .

df['Category_Filter'] = df[df['Category'].isin(['Furniture', 'Technology'])]

Я пробовал приведенный выше код для создания нового столбца, но не работает.

Category_Filter
Furniture
Technology

Это желаемый вывод

Ответы [ 2 ]

0 голосов
/ 30 ноября 2018

Если я правильно понимаю вас, вы ищете общее количество значений, повторяемых для каждого элемента в столбце.

Пример dataFrame:

>>> df
        Category
0      Furniture
1     Technology
2  Office Supply
3      Furniture
4     Technology
5  Office Supply
6      Furniture
7     Technology
8  Office Supply

Согласно обновленному кодуshoule woek, NaN ..

>>> df['Category_Filter'] = df[df['Category'].isin(['Furniture', 'Technology'])]
>>> df
        Category Category_Filter
0      Furniture       Furniture
1     Technology      Technology
2  Office Supply             NaN
3      Furniture       Furniture
4     Technology      Technology
5  Office Supply             NaN
6      Furniture       Furniture
7     Technology      Technology
8  Office Supply             NaN

будет сообщаться только о тех значениях, которые вам не соответствуют. Или, если вы хотите, чтобы все строки отбрасывались со значениями NaN, просто попробуйте:

>>> df.dropna()
# df.dropna(inplace=True)   # make in permanent to the DataFrame
     Category Category_Filter
0   Furniture       Furniture
1  Technology      Technology
3   Furniture       Furniture
4  Technology      Technology
6   Furniture       Furniture
7  Technology      Technology
0 голосов
/ 30 ноября 2018

Полагаю, вы имеете в виду, что вам нужен фрейм данных, где значения в «Категории» - это «Мебель» или «Технология».Вот что вы можете сделать.

df[df['Category'].isin(['Furniture ', 'Technology '])]

Если вы не это имели в виду, возможно, вы могли бы уточнить.

РЕДАКТИРОВАТЬ: Отвечая на ваш комментарий ниже:

 df['Category_filter'] = df['Category'].where(df['Category'].isin(['Furniture ', 'Technology ']))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...