我在熊猫中有以下数据框
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
如何在熊猫中做到这一点?
答案 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