python - 尝试使用 str.contains 和 boolean 掩码,但仅针对 Pandas 中的两个单值实例

标签 python string pandas boolean pandas-groupby

我想做的是让所有行都具有相同的唯一 ID,如果这些行中的任何一行在 Yurt 列中仅包含两个“-”实例。

我正在考虑通过执行以下操作来使用 str.contains 和 boolean 掩码:

df[df['ID'].isin(df.loc[df.Yurt.str.contains('-'), 'ID'].unique())]

...但不确定我如何只保留只有两个没有值的实例的行。

例子 df:

ID      %       Yurt
abc123  0.833   Bodega
abc123  0.87    -
abc123  0.867   -
abc123  0.812   -
lmn789  0.837   Mickey's
lmn789  0.856   Chopped Cheese
lmn789  0.813   -
lmn789  0.812   -
xyz456  0.111   -
xyz456  0.222   -
xyz456  0.333   -
xyz456  0.444   -

结果 df:

ID      %       Yurt
lmn789  0.837   Mickey's
lmn789  0.856   Chopped Cheese
lmn789  0.813   -
lmn789  0.812   -

最佳答案

在“ID”列上执行 groupby 并使用 filter :

df = df.groupby('ID').filter(lambda grp: grp['Yurt'].eq('-').sum() == 2)

输出:

       ID      %            Yurt
4  lmn789  0.837        Mickey's
5  lmn789  0.856  Chopped Cheese
6  lmn789  0.813               -
7  lmn789  0.812               -

关于python - 尝试使用 str.contains 和 boolean 掩码,但仅针对 Pandas 中的两个单值实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51544427/

相关文章:

在 Heroku 上安装 Buildpack 后出现 Python ImportError

Java - 对字符串列表进行排序,根据字符串的包含确定顺序

javascript - 使用 javascript 或正则表达式从值中分割数字和字符串

python - 填充 NaN 值

python - Pandas 的系列包含 AttributeError : 'Series' object has no attribute 'contains'

python - 如何为 pandas fillna() 方法中的不同列应用不同的方法参数

Python 命令 print() 不打印

python - 使用 OpenCV(或使用其他工具)检测网格节点

c++ - 是否可以使用C++ 20中的starts_with/ends_with比较不区分大小写的代码?

python - 导入我的 'random' 文件时脚本失败