我有一个数据框。
A B
0 2 3
1 2 4
2 3 5
如果一列的值具有两个以上的不同值,我将删除。 期待输出:
A
0 2
1 2
2 3
答案 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