我想出一个很好的解决方案来隔离具有唯一唯一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/