如何找到一个值与熊猫中的多个值相关联

时间:2018-11-24 17:39:43

标签: python pandas

我在熊猫中有以下数据框

  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 :(得分:3)

使用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