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])))
?我已经在编辑中添加了所需的输出!