Pandas中仅对value为空且id重复的行去重并保留首行
解决方法
可以用Pandas的duplicated方法结合布尔掩码实现,步骤简单直接:
1. 构造示例数据(替换为你的实际DataFrame即可)
import pandas as pd data = { 'id': ['1', '1', '1', '1.1', '1.1', '1.2', '2', '2.1', '2.1.1', '1', '3', '3', '3.1'], 'value': ['', '', '', 'some text', 'xxx', 'xxx', '', '', 'xxx', '', '', '', 'hi'], 'more columns': ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm'] } df = pd.DataFrame(data)
2. 核心逻辑实现
# 生成保留规则:仅过滤掉「value为空且是同一id重复出现的行」 mask = ~((df['value'] == '') & df.duplicated(subset='id', keep='first')) # 应用规则得到结果 result_df = df[mask]
逻辑说明
df.duplicated(subset='id', keep='first'):标记同一id中除第一行外的所有重复行- 结合
df['value'] == '',筛选出「value为空且属于同一id重复组」的行 - 用
~取反,得到需要保留的行:要么value非空,要么是同一id中value为空的第一行
输出结果
运行后result_df的内容如下:
id value more columns 0 1 a 3 1.1 some text d 4 1.1 xxx e 5 1.2 xxx f 6 2 g 7 2.1 h 8 2.1.1 xxx i 11 3 k 12 3.1 hi m
内容的提问来源于stack exchange,提问作者Kspr
相关产品推荐
相关产品推荐

