我想出一个很好的解决方案来隔离具有唯一唯一ID且仅包含特定值实例的行,同时删除所有具有共享唯一ID的行(如果它们包含任何其他值)的好方法。 (很抱歉,如果不清楚,但是我在下面有示例df)

这是我对于str.contains和boolean mask的逻辑,我正在考虑使用类似的东西...

df [df ['ID']。isin(df.loc [df1.Yurrr.str.contains('Bodega'),'ID']。unique())]

df示例:

   ID      %       Yurrr
    abc123  0.833   Bodega
    abc123  0.87    Bodega
    abc123  0.867   Bodega
    abc123  0.812   Bodega
    lmn789  0.837   Beck's
    lmn789  0.856   Chopped Cheese
    lmn789  0.813   Bodega
    lmn789  0.812   Beck's
    xyz456  0.111   Cardi B
    xyz456  0.222   Cardi B
    xyz456  0.333   Bodega
    xyz456  0.444   Bodega


输出df:

    ID      %       Yurrr
    abc123  0.833   Bodega
    abc123  0.87    Bodega
    abc123  0.867   Bodega
    abc123  0.812   Bodega

最佳答案

您可以使用此:

df[df.groupby('ID')['Yurrr'].transform(lambda x: x.str.contains('Bodega').all())]


要么

df[df.Yurrr.str.contains('Bodega').groupby(df['ID']).transform(all)]


输出:

       ID      %   Yurrr
0  abc123  0.833  Bodega
1  abc123  0.870  Bodega
2  abc123  0.867  Bodega
3  abc123  0.812  Bodega

关于python - 尝试使用str.contains和boolean mask,但仅适用于Pandas中的单个值,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/51600490/

10-14 18:21
查看更多