如何根据熊猫数据框中的特定值过滤列

时间:2021-05-03 10:19:50

标签: python-3.x pandas

我在知道如何根据 pandas df 中的某些条件过滤一组列中的值时遇到了特殊的麻烦。

我在每个“是/否”中有三列二进制值。我想编写一个执行以下操作的代码:

过滤并保留满足最少一个“是”但最多满足一个“是”的行。

因此应排除显示:"c1: YES, c2: no: c3: YES" 的行。 一行显示:"c1: no, c2: no, c3: YES" 应包含在内。

enter image description here

提前致谢!

1 个答案:

答案 0 :(得分:1)

您可以通过将所有列与 yes 进行比较并在 boolean indexing 中过滤来计算是否只有 sum 值:

df1 = df[df.eq('yes').sum(axis=1).eq(1)]

或者:

df1 = df[(df == 'yes').sum(axis=1) == 1]