我在知道如何根据 pandas df 中的某些条件过滤一组列中的值时遇到了特殊的麻烦。
我在每个“是/否”中有三列二进制值。我想编写一个执行以下操作的代码:
过滤并保留满足最少一个“是”但最多满足一个“是”的行。
因此应排除显示:"c1: YES, c2: no: c3: YES"
的行。
一行显示:"c1: no, c2: no, c3: YES"
应包含在内。
提前致谢!
答案 0 :(得分:1)
您可以通过将所有列与 yes
进行比较并在 boolean indexing
中过滤来计算是否只有 sum
值:
df1 = df[df.eq('yes').sum(axis=1).eq(1)]
或者:
df1 = df[(df == 'yes').sum(axis=1) == 1]