如何在Pandas中删除三列值全部相等的行?
删除Pandas DataFrame中指定多列值完全相等的行
要删除DataFrame中val1、val2、val3三列值全部相等的行,可通过以下方式实现:
示例数据
import pandas as pd data = [ ['A',2,2,2], ['B',2,2,3], ['C',3,3,3], ['D',4,2,2], ['E',5,5,2] ] df = pd.DataFrame(data,columns=['name','val1','val2','val3']) print("原始数据:") print(df)
解决方案
提供两种简洁的实现方式,均可筛选出需要保留的行:
方法一:通过唯一值数量判断
nunique(axis=1)会计算每行的唯一值数量,若三列值完全相等,唯一值数量为1。取反即可筛选出目标行:
# 筛选val1、val2、val3不全相等的行 filtered_df = df[df[['val1','val2','val3']].nunique(axis=1) != 1] print("\n处理后数据:") print(filtered_df)
方法二:逐列比较相等性
用eq()方法逐列对比,判断三列值是否全部相等,再取反筛选:
# 生成三列值全相等的掩码 mask = df['val1'].eq(df['val2']) & df['val2'].eq(df['val3']) # 筛选不满足条件的行 filtered_df = df[~mask] print("\n处理后数据:") print(filtered_df)
两种方法最终都会得到删除第0行和第2行后的结果:
name val1 val2 val3 1 B 2 2 3 3 D 4 2 2 4 E 5 5 2
内容的提问来源于stack exchange,提问作者lucky1928
相关产品推荐
相关产品推荐

