我正在寻找一种优雅而有效的解决方案。我找到了一个快速而肮脏的解决方案。但是我想知道是否还有更多的“熊猫方式”可以做。
我有一个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] 删除。
我来说两句