如何移除Python DataFrame中存在跨列重复值的行
解决DataFrame保留所有值唯一行的问题
核心思路
对DataFrame的每一行,检查该行所有列的元素是否全部唯一,筛选出符合条件的行即可。
实现步骤
- 导入pandas并创建示例DataFrame
import pandas as pd data = { 'ID': [0, 1, 2, 3], 'a': [1, 2, 1, 0], 'b': [3, 8, 3, 1], 'c': [4, 8, 10, 3], 'd': [9, 3, 12, 0] } df = pd.DataFrame(data)
- 筛选符合条件的行
使用apply遍历每一行,结合nunique()判断该行唯一值数量是否等于列数:
# 筛选所有元素唯一的行 filtered_df = df[df.apply(lambda row: row.nunique() == len(row), axis=1)]
或者用集合判断(逻辑等价,适合无缺失值的场景):
filtered_df = df[df.apply(lambda row: len(set(row)) == len(row), axis=1)]
- 查看结果
运行后filtered_df的输出为:
ID a b c d 0 0 1 3 4 9 2 2 1 3 10 12
说明
row.nunique():返回该行中唯一值的数量,会自动忽略重复元素axis=1:指定apply按行遍历- 两种方法都能实现需求,
nunique()更适合包含缺失值(NaN)的场景,因为它会正确识别NaN的唯一性
内容的提问来源于stack exchange,提问作者Rose
相关产品推荐
相关产品推荐

