获取具有大于指定值的不同值的列名python

noo*_*oob 5 python pandas

数据框 X:

A   B    C    D
V1  V2   V3   V4
V1  V3   V4   V5
V1  V4   V5   V5
V1  V5   V9   V5
V1  V2   V3   V4
V1  V10  V11  V12
V1  V10  V6   V8
V1  V12  V7   V8
Run Code Online (Sandbox Code Playgroud)

这里 Col A 有 1 个唯一值,Col B 有 6 个唯一值,Col C 有 7 个唯一值,Col D 有 4 个唯一值。

我需要一个包含唯一值 > 4 的所有列的列表。

X.columns[(X.nunique() > 4).any()]
Run Code Online (Sandbox Code Playgroud)

我希望在这里只得到 col B 和 Col C,但我得到了所有列。如何实现所需的输出。

jez*_*ael 6

你真的很接近,只删除.any布尔掩码:

c = X.columns[(X.nunique() > 4)]
print (c)
Index(['B', 'C'], dtype='object')
Run Code Online (Sandbox Code Playgroud)

如果需要选择列使用DataFrame.loc

df = X.loc[:, (X.nunique() > 4)]
print (df)
     B    C
0   V2   V3
1   V3   V4
2   V4   V5
3   V5   V9
4   V2   V3
5  V10  V11
6  V10   V6
7  V12   V7
Run Code Online (Sandbox Code Playgroud)