如何按条件筛选pandas Series元素以获取DataFrame中仅含1个唯一值的列名
解决方案
- 针对你已经生成的唯一值计数Series
sr,可以直接用和DataFrame一致的布尔索引逻辑筛选,无需循环遍历:
# 直接获取所有值为1的元素对应的索引(即符合要求的列名) result = sr[sr == 1].index.to_list() # 如需直接打印输出 print(result)
- 如果不需要单独保留中间Series变量,可以一步拿到最终结果:
result = df.columns[df.nunique() == 1].to_list()
原理说明:
df.nunique()默认按列统计唯一值数量,返回的Series索引对应原DataFrame的列名,值对应该列的唯一值计数。sr == 1会生成等长的布尔Series,用它过滤原Series后,剩余元素的索引就是仅含1个唯一值的列名。这种向量化操作是pandas原生实现,比手动遍历iteritems()的执行效率高得多,代码也更简洁。
内容的提问来源于stack exchange,提问作者ref
相关产品推荐
相关产品推荐

