pandas如何删除8个均值列中存在3个及以上相同值的行
解决方法
你可以通过以下Pandas代码实现需求,适配任意数量前置列、后8列为均值列的场景:
import pandas as pd # 构造示例数据,你可以替换为自己的DataFrame读取逻辑 data = {'Column1': {0: 'A', 1: 'B', 2: 'C', 3: 'D'}, 'Column2': {0: 'X', 1: 'Y', 2: 'Z', 3: 'F'}, 'Mean1': {0: 50, 1: 20, 2: 50, 3: 40}, 'Mean2': {0: 50, 1: 21, 2: 50, 3: 41}, 'Mean3': {0: 50, 1: 22, 2: 50, 3: 42}, 'Mean4': {0: 50, 1: 23, 2: 63, 3: 43}, 'Mean5': {0: 50, 1: 24, 2: 99, 3: 44}, 'Mean6': {0: 50, 1: 25, 2: 54, 3: 45}, 'Mean7': {0: 50, 1: 26, 2: 24, 3: 46}, 'Mean8': {0: 50, 1: 27, 2: 12, 3: 47}} df = pd.DataFrame(data) # 提取最后8列作为均值列 mean_cols = df.columns[-8:] # 筛选出无任意值出现≥3次的行 filtered_df = df[df[mean_cols].apply(lambda row: row.value_counts().max() < 3, axis=1)] print(filtered_df)
逻辑说明
- 用
df.columns[-8:]自动取最后8列作为均值计算范围,不需要手动枚举列名,适配列数多的场景 - 对每一行的均值列数据调用
value_counts()统计各值出现频次,取最大频次判断是否小于3 - 最终保留的行即为符合要求的结果,输出和你给出的预期完全一致
内容的提问来源于stack exchange,提问作者Anakin Skywalker
相关产品推荐
相关产品推荐

