Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/286.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Pandas:groupby值\u计数按频率和子类别筛选_Python_Pandas_Dataframe_Pandas Groupby - Fatal编程技术网

Python Pandas:groupby值\u计数按频率和子类别筛选

Python Pandas:groupby值\u计数按频率和子类别筛选,python,pandas,dataframe,pandas-groupby,Python,Pandas,Dataframe,Pandas Groupby,我在熊猫中有这样一个数据帧: Session Rating A Positive A Positive A Positive A Negative B Negative B Negative C Positive 使用counts=df.groupby('Session')['Rating'].value\u counts()我得到一个如下的序列对象: Session Rating A Positi

我在熊猫中有这样一个数据帧:

Session Rating
A       Positive
A       Positive
A       Positive
A       Negative
B       Negative
B       Negative
C       Positive
使用
counts=df.groupby('Session')['Rating'].value\u counts()
我得到一个如下的序列对象:

Session Rating
A       Positive  3
        Negative  1
B       Negative  2
C       Positive  1
我要做的是根据两个标准进行筛选:
1) 按频率过滤,因此当计数>1时
2) 按评级筛选=='正'

我发现是1),但我不确定如何做2),因为这是一个系列,我无法获得评级字段。预期结果将是
正3


最后,我想屏蔽我的原始数据帧,以排除所有满足这两个条件的行。非常感谢您的帮助,谢谢

您可以使用这种组合,首先过滤评级为“正”的数据帧,然后通过groupby和value_计数获得一个系列,最后,使用.loc和lambda函数创建一个布尔值,仅用于选择系列中大于1的部分

df[df.Rating == 'Positive'].groupby('Session')['Rating'].value_counts().loc[lambda x: x>1]
输出:

Session  Rating  
A        Positive    3
Name: Rating, dtype: int64

下面是使用
groupby.size
的一种方法,然后是:


你能发布预期的输出吗?谢谢!我使用了您的方法并对其进行了修改,以获得我想要的结果:idxs=df[df.Rating='Positive']['Session'].value_counts().gt(1)df=df.loc[~df['Session'].isin(idxs[idxs].index)]不需要groupby。
res = df.groupby(['Session', 'Rating']).size().reset_index(name='Count')\
        .query('(Rating == "Positive") & (Count > 1)')

print(res)

  Session    Rating  Count
1       A  Positive      3