Python 大熊猫条件群居

Python 大熊猫条件群居,python,pandas,dataframe,group-by,Python,Pandas,Dataframe,Group By,我有一个数据帧: df = pd.DataFrame({'dates':['2015-01-01','2015-01-02','2015-01-03','2015-01-03','2015-01- 02','2015-01-02','2015-01-01'],'myvals':[1,2,3,3,4,4,3]}) 我想和groupby一起计数,比如:df.groupby('dates')['myval'].transform('nunique') 但我只想在myval=3 期望输出: dates

我有一个数据帧:

df = pd.DataFrame({'dates':['2015-01-01','2015-01-02','2015-01-03','2015-01-03','2015-01- 02','2015-01-02','2015-01-01'],'myvals':[1,2,3,3,4,4,3]})
我想和groupby一起计数,比如:
df.groupby('dates')['myval'].transform('nunique')

但我只想在
myval=3

期望输出:

dates        myvals
2015-01-01   1
2015-01-02   0
2015-01-03   2
2015-01-03   2
2015-01-02   0
2015-01-02   0
2015-01-01   1
在这种情况下,我如何修改代码

谢谢

使用:

df['myvals'] = (df['myvals'] == 3).groupby(df['dates']).transform('sum')
输出:

        dates  myvals
0  2015-01-01     1.0
1  2015-01-02     0.0
2  2015-01-03     2.0
3  2015-01-03     2.0
4  2015-01-02     0.0
5  2015-01-02     0.0
6  2015-01-01     1.0

按照您的解释,如果您只想在myvals==3上执行nunique,那么答案将始终为1,因为只有一个组。我遗漏了什么?你是说
df[df['my_val'].eq(3)].groupby('dates')['myval'].transform('nunique')
df.groupby('dates').myvals.transform(lambda x:len({*(x[x!=3])))
?我已经在编辑中添加了所需的输出!