有没有比下面的代码更快的方法来删除只包含一个不同值的列?
cols=df.columns.tolist()
for col in cols:
if len(set(df[col].tolist()))<2:
df=df.drop(col, axis=1)
这对于大型数据帧来说真的很慢。从逻辑上讲,这会计算每列中值的数量,而实际上它可能会在达到 2 个不同的值后停止计数。
原文由 Alexis Eggermont 发布,翻译遵循 CC BY-SA 4.0 许可协议
您可以使用
Series.unique()
方法找出列中的所有唯一元素,对于其.unique()
仅返回1
的列,您可以删除该元素,您可以删除该元素。例子 -一种不进行就地丢弃的方法 -
演示 -
计时结果 -
最快的方法似乎仍然是使用
unique
并循环遍历列的方法。