当前位置: 首页 > 知识库问答 >
问题:

按分组后的两个条件筛选

籍昱
2023-03-14

我愿意过滤其中有短信和电话在类型列中的id,每当login_method等于resend

df

id    type   login_method
 1     SMS         resend
 1     SMS       complete
 2   phone         resend
 2     SMS         resend
 2     SMS          start
 3   phone         resend
 3   phone          start
 3   phone       complete
 3     SMS           nice

预期结果

df
    id    type   login_method
 1     SMS         resend
 1     SMS       complete
 3   phone         resend
 3   phone          start
 3   phone       complete
 3     SMS           nice

在这种情况下,只有id 2的登录方法中的电话和短信等于重新发送

共有1个答案

谷德本
2023-03-14

使用:

v = ['SMS','phone']
#first filter only valuse by list
df = df[df['type'].isin(v)]

#get id where are all values per groups with resend
m1 = df['login_method'] == 'resend'
s = df[m1].drop_duplicates(['id','type']).groupby('id')['type'].nunique() != len(v)

#filtering by ids
df1 = df[df['id'].isin(s.index[s])]
print (df1)
   id   type login_method
0   1    SMS       resend
1   1    SMS     complete
4   3  phone       resend
5   3  phone        start
6   3  phone     complete
7   3    SMS         nice
 类似资料:
  • 问题内容: 我有一张税单: TaxLine类为 我想基于unique 和合并它们,然后添加预期: 问题答案: 主体与链接问题中的主体相同,只需要一个不同的下游收集器来求和:

  • 问题内容: 我正在尝试使用Criteria和ProjectionList来获取报告,并且通过hibernate使用它还很新。所以我有这个模型: 我使用以下命令构建查询: 基本上,此方法会收到一个Category和一个userId来过滤付款记录和一个期间,这些人将指示从现在到现在我要累加多少个月。如何获得按月分组的总和结果? 任何帮助或提示,我将不胜感激! 问题答案: 我找到了答案,而且非常简单。我

  • 我有这样的矩阵: 我需要在最后一列中过滤它tp get value 1。所以结果应该是这样的: 我的当前代码是: 我的代码返回一个空数组。我一定错过了什么...

  • 我想根据一些条件将结果从两个单声道组合起来。这两个单声道都是网络客户端调用的结果: 第一个是期望快速响应的单个呼叫。 第二个是几个响应缓慢的电话的组合。 如果第一个单声道的结果满足某些条件,则“取消”第二个单声道的想法可以节省时间并避免不必要的网络调用。如果第一个单声道的结果不够,请使用第二个单声道。 一个静态编程语言代码示例来解释我的想法: 更新: 更清楚的是,让我们假设平凡的结果在1秒内出现,

  • 问题内容: 我有一些文件: 如何按地区过滤/选择不同的文档? 在SQL中,我可以使用GROUP BY。我尝试了条件聚合,但返回的计数却不同。 感谢您的帮助!:-) 问题答案: 如果您的ElasticSearch版本为1.3或更高版本,则可以使用top_hits类型的子聚合,默认情况下,它将为您提供按查询分数排序的前三个匹配文档(此处为1,因为您使用match_all查询)。 您可以将参数设置为3以

  • 问题内容: 我有2张桌子: 表: 表: 现在,我想获取所有位置并过滤两个属性: 我正在尝试构造一些查询,如下所示: …但是仍然无法得到我所需要的。 问题答案: 经过几个小时的合并和尝试,我终于做到了: 我太接近了,因此将所有过滤条件都移至。