首页 > 解决方案 > 如何找到一个值与熊猫中的多个值相关联

问题描述

我在熊猫中有以下数据框

  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

我怎样才能在熊猫中做到这一点?

标签: pythonpandas

解决方案


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

推荐阅读