如何删除pandas DataFrame中基于多列的重复及无效记录
pandas DataFrame无效行与重复行删除方案
实现逻辑
- 第一步删除无效行:过滤掉
col_1与col_2取值相等的行,对应你样例中标注unwanted的所有行 - 第二步删除重复行:将
col_3、col_4取值相同的行归为同一重复组,每组内按col_1的字典序计算秩,仅保留秩为1的行,实现去重,无需调用np.tril相关逻辑
完整代码
import pandas as pd # 构造你的样例DataFrame df = pd.DataFrame({ 'col_1': ['a','a','a','b','b','b','c','c','c'], 'col_2': ['a','b','c','a','b','c','a','b','c'], 'col_3': [1, 0.7, 0.5, 0.7, 1, 0.8, 0.5, 0.8, 1], 'col_4': [1, 0.5, 0.3, 0.5, 1, 0.6, 0.3, 0.6, 1] }) # 1. 过滤无效行 df = df[df['col_1'] != df['col_2']] # 2. 按col3、col4分组用秩去重 df = df[df.groupby(['col_3', 'col_4'])['col_1'].rank(method='first') == 1].reset_index(drop=True) print(df)
输出结果
col_1 col_2 col_3 col_4 0 a b 0.7 0.5 1 a c 0.5 0.3 2 b c 0.8 0.6
内容的提问来源于stack exchange,提问作者Ali ZareShahi
相关产品推荐
相关产品推荐

