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

У меня есть следующий фрейм данных в пандах

  code     tank      product
  1234     1         MS
  1234     2         HS
  1234     1         HS
  1234     1         HS
  1235     1         MS
  1235     1         HS
  1235     1         MS
  1245     1         MS
  1245     2         HS

Я хочу выяснить, сколько танков имеет несколько продуктов, связанных с ними, в приведенном выше фрейме данных, например, для кода 1234, танк 1 также имеет Ms и HS. Есть 2случаи в вышеупомянутом фрейме данных

Мой желаемый фрейм данных будет

  code     tank     flag
  1234     1        yes
  1234     2        no
  1235     1        yes
  1245     1        no
  1245     2        no

Как я могу сделать это в пандах?

1 Ответ

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

Используйте SeriesGroupBy.nunique для подсчета уникальных значений для групп:

df = df.groupby(['code','tank'])['product'].nunique().reset_index()
print (df)
   code  tank  product
0  1234     1        2
1  1234     2        1
2  1235     1        2
3  1245     1        1
4  1245     2        1

А затем извлеките столбец с помощью pop и установите значения с помощью numpy.where

df['flag'] = np.where(df.pop('product') == 1, 'no', 'yes')
print (df)
   code  tank flag
0  1234     1  yes
1  1234     2   no
2  1235     1  yes
3  1245     1   no
4  1245     2   no
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...