gpt4 book ai didi

python - 使用非唯一索引从 pandas DataFrame 中删除行

转载 作者:太空宇宙 更新时间:2023-11-03 15:00:48 25 4
gpt4 key购买 nike

当索引保证唯一时,我正在寻找一种方法来删除 pandas DataFrame 中的行。

所以,我想从我的 DataFrame df 中删除项目 0 和 4。这将是您用来执行此操作的典型代码:

df.drop([0, 4].index)

如果每个索引都是唯一的,这就可以正常工作。但是,如果项目 0、1 和 2 都具有相同的索引,则此代码会删除项目 0、1、2 和 4,而不仅仅是 0 和 4。

我的 DataFrame 以这种方式设置是有充分理由的,所以我不想重组我的数据,它看起来大约是这样的:

        age
site
mc03 0.39
mc03 0.348
mc03 0.348
mc03 0.42
mc04 0.78

我试过:

del df.iloc[0]

但这失败了:

AttributeError: __delitem__

对于如何完成此任务还有其他建议吗?

更新:

我找到了两种方法,但都不是特别优雅。

to_drop = [0, 4]
df = df.iloc[sorted(set(range(len(df))) - set(to_drop))]
# or:
df = df.iloc[[i for i in range(len(df)) if i not in to_drop]]

不过,也许这已经是最好的了?

最佳答案

这也不是很优雅,但让我把它贴出来作为替代:

df = df.reset_index().drop([0, 4]).set_index("site")

它临时将索引更改为常规索引,删除行并设置回原始索引。思路来自this answer .

关于python - 使用非唯一索引从 pandas DataFrame 中删除行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38105804/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com