删除多值列

时间:2019-07-21 03:01:56

标签: python pandas

我有一个数据框。

   A  B
0  2  3
1  2  4
2  3  5

如果一列的值具有两个以上的不同值,我将删除。 期待输出:

   A
0  2
1  2
2  3

2 个答案:

答案 0 :(得分:3)

您可以使用.nunique().loc,并传递一个布尔值

df = pd.DataFrame({'A': {0: 2, 1: 2, 2: 3}, 'B': {0: 3, 1: 4, 2: 5}})
df.loc[:, (df.nunique() <= 2)]
   A
0  2
1  2
2  3

一种替代方法(贷记this answer):

criteria = df.nunique() <= 2
df[criteria.index[criteria]]

答案 1 :(得分:1)

使用for循环和value_count获得结果:-

df = pd.DataFrame(data= {'A':[2,2,3], 'B':[3,4,5]})
for var in df.columns:
    result = df[var].value_counts()
    if len(result)>2:
        df.drop(var, axis=1,inplace=True)
df

输出

    A
 0  2
 1  2
 2  3