如何对多个列使用交叉表?

时间:2019-03-24 18:27:37

标签: pandas crosstab

我需要使用下面df上的交叉表的帮助。

    a       b       c
-------------------------
|   a   |  None |   c   |
|   a   |   b   |  None |
|  None |   b   |   c   |
|   a   |  None |  None |
|  None |  None |  None |

我想提取指定了多个字母的行(a&b,a&c,b&c),即1-3行。我相信最简单的方法是通过交叉表(我知道我会得到一个计数,但是我也可以通过这种方法查看行吗?)。我要避免写冗长的“或”语句来实现这一目标。

所需的输出:

    a       b       c
-------------------------
|   a   |  None |   c   |
|   a   |   b   |  None |
|  None |   b   |   c   |

1 个答案:

答案 0 :(得分:1)

您不需要交叉表,只需使用notnull检查非空数:

df[df.notnull().sum(1).gt(1)]

     a    b    c
0    a  NaN    c
1    a    b  NaN
2  NaN    b    c

或者您可以使用dropna

t = 2
df.dropna(thresh=df.shape[1] - t + 1)

     a    b    c
0    a  NaN    c
1    a    b  NaN
2  NaN    b    c