返回一个共享一个值并且至少有一个与另一个条件匹配的行

罗曼·L。

我正在寻找一种优雅而有效的解决方案。我找到了一个快速而肮脏的解决方案。但是我想知道是否还有更多的“熊猫方式”可以做。

我有一个PD数据帧:

Id   Value
T4    0.4
T5    0.3
T5    0.9
T5    1
T6    0.8
T7    0.2
T7    0.8

我想检索至少出现两次且至少具有单行值<= 0.4的id。

这里的预期输出是[T5,T7]

目前,我的解决方案包括遍历Id的所有唯一值,使其成为子df,并检查是否有多于2行,并且至少一次Value小于或等于0.4

任何帮助表示赞赏。

广晃

这可以通过以下方式完成groupby

g = df.groupby('Id')['Value']

df[g.transform('size').ge(2) & g.transform('min').le(0.4)]

输出:

   Id  Value
1  T5    0.3
2  T5    0.9
3  T5    1.0
5  T7    0.2
6  T7    0.8

如果您只需要Ids,我们可以做:

g = df.groupby('Id')['Value'].agg(['size','min'])
g.index[g['size'].ge(2) & g['min'].le(0.4)]

这使:

Index(['T5', 'T7'], dtype='object', name='Id')

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

至少有一个而不是另一个查询

过滤对象数组,其中一个对象的数组与另一个数组至少有一个匹配项

如果至少有一个元素匹配,则返回所有数组

mongodb中至少有一个

过滤掉至少有一个满足条件的公共字段的行

如果列中至少有一个特定值,则删除所有行

在一个子集的单元格中,确定是否至少有一个对应的单元格与一个值匹配

如何生一个至少有一个孩子的父母?

查找并返回至少有一个np.inf值的Pandas数据框的行

TSQL - 在表中查找一列中有多个记录,并且在另一列中至少有一个特定的值出现

查找逻辑矩阵的每一行是否至少有一个TRUE

检查数组是否至少有一个条件,并且以后再检查不要覆盖它

获取至少有一个元素符合某种条件的切片的索引

至少有一个对等方符合条件的行数

匹配一个或另一个条件

如果行中至少有一个 Na,则使行 Na

单线检查列表中是否至少有一个项目存在于另一个列表中?

Elasticsearch 过滤器至少有一个嵌套值大于零

Rails 记录其中至少有一个与属性值的关联

MySQL 多个 JOINS 至少有一个包含值的 LIKE

选择在Cakephp中至少有一个hasMany关系行的记录

展平一个长数据集,如果至少有一个非缺失值,则插入一个指标

返回匹配一个条件的行,如果没有,则在 MYSQL 中返回另一个

Oracle PL/SQL:如果列至少有“一个空值”或“未找到数据”,则返回 true

检查2个数组是否至少有一个共同的元素?

在n个集合中至少有一个元素的最小集合

检查两个 Python 集合是否至少有一个公共元素

在 perl 中匹配一个点,当它之前至少有三个单词时

如何检查一个对象是否至少有一条记录?