Pandas DataFrame是否有类似Series的remove/pop功能删除重复索引首行
Pandas 重复索引删除首个重复项解决方案
Pandas 没有和 Series remove 完全对应的同名属性/方法,你可以通过索引的duplicated()方法配合布尔索引快速实现需求,核心逻辑是标记重复索引的非末次出现项为重复,然后过滤掉这些条目即可。
完整实现代码
1. 构造示例DataFrame
import pandas as pd import numpy as np df = pd.DataFrame( data={ "a": [1, 4, 7], "b": [2, 5, 9], "c": [3, 6, 10], "d": [np.nan, np.nan, np.nan] }, index=[100, 200, 100] )
2. 核心筛选逻辑
# keep='last'表示重复索引仅保留最后一次出现的条目 df = df[~df.index.duplicated(keep='last')]
3. 输出结果
执行后得到的df完全符合预期:
a b c d 200 4 5 6 NaN 100 7 9 10 NaN
参数说明
df.index.duplicated()会返回一个和索引长度相同的布尔数组,标记对应位置的索引是否为重复值keep='last'配置项指定重复值判定规则:仅最后一次出现的索引值不标记为重复,更早出现的重复索引都会被标记为True- 对布尔数组取反(
~符号)后筛选DataFrame,就会删掉所有首次出现的重复索引条目,只保留末次重复条目和无重复的条目。
内容的提问来源于stack exchange,提问作者Arnav Bhati
相关产品推荐
相关产品推荐

