丢弃离散列pandas dataframe

时间:2018-04-24 10:36:50

标签: python pandas dataframe

如何使用太少的离散步骤自动删除列?步骤数量未知,但一个良好的开端是删除少于100个离散可能值的列。

这可能涉及计算列中唯一值的数量,并且丢弃的值将小于100.有点像,但更优雅。

for column in X.columns:
   if len(X[column].unique()) < 100:
      del X[column]

1 个答案:

答案 0 :(得分:0)

我认为需要boolean indexing通过DataFrame.nunique按'倒置'条件 - < 100>=100进行比较>=100掩码选择列:

<强>示例

df = pd.DataFrame({'A':list('abcdef'),
                   'B':[4,5,4,5,5,4],
                   'C':[7,8,9,4,2,3],
                   'D':[1,3,5,7,1,0],
                   'E':[5,3,6,9,2,4],
                   'F':list('aaabbb')})

print (df)
   A  B  C  D  E  F
0  a  4  7  1  5  a
1  b  5  8  3  3  a
2  c  4  9  5  6  a
3  d  5  4  7  9  b
4  e  5  2  1  2  b
5  f  4  3  0  4  b

df = df.loc[:, df.nunique() >= 4]
print (df)
   A  C  D  E
0  a  7  1  5
1  b  8  3  3
2  c  9  5  6
3  d  4  7  9
4  e  2  1  2
5  f  3  0  4

<强>详细

print (df.nunique())
A    6
B    2
C    6
D    5
E    6
F    2
dtype: int64