for col in df.columns:
if len(df[col].unique()) == 1:
df.drop(col,inplace=True,axis=1)
一种不会就地丢弃的方法-
res = df
for col in df.columns:
if len(df[col].unique()) == 1:
res = res.drop(col,axis=1)
演示-
In [154]: df = pd.DataFrame([[1,2,3],[1,3,3],[1,2,3]])
In [155]: for col in df.columns:
.....: if len(df[col].unique()) == 1:
.....: df.drop(col,inplace=True,axis=1)
.....:
In [156]: df
Out[156]:
1
0 2
1 3
2 2
计时结果-
In [166]: %paste
def func1(df):
res = df
for col in df.columns:
if len(df[col].unique()) == 1:
res = res.drop(col,axis=1)
return res
## -- End pasted text --
In [172]: df = pd.DataFrame({'a':1, 'b':np.arange(5), 'c':[0,0,2,2,2]})
In [178]: %timeit func1(df)
1000 loops, best of 3: 1.05 ms per loop
In [180]: %timeit df[df.apply(pd.Series.value_counts).dropna(thresh=2, axis=1).columns]
100 loops, best of 3: 8.81 ms per loop
In [181]: %timeit df.apply(pd.Series.value_counts).dropna(thresh=2, axis=1)
100 loops, best of 3: 5.81 ms per loop
您可以使用^{} 方法找出列中的所有唯一元素,对于
.unique()
只返回1
元素的列,可以删除该元素。示例-一种不会就地丢弃的方法-
演示-
计时结果-
最快的方法似乎仍然是使用
unique
并在列中循环的方法。一步:
两个步骤:
创建具有多个不同值的列名列表。
删除不在“keep”中的列
例如
相关问题 更多 >
编程相关推荐