gpt4 book ai didi

python - 在 Pandas 中的特定列值之后删除 id 的行

转载 作者:太空狗 更新时间:2023-10-30 01:04:15 25 4
gpt4 key购买 nike

我有一个像这样的数据集:

Id   Status

1 0
1 0
1 0
1 0
1 1
2 0
1 0
2 0
3 0
3 0

我想在状态变为 1 后删除 id 的所有行,即我的新数据集将是:

Id   Status

1 0
1 0
1 0
1 0
1 1
2 0
2 0
3 0
3 0

i.e.

1 0 --> gets removed since this row appears after id 1 already had a status of 1

由于我有一个非常大的 (200 GB+) 数据集,如何有效地实现它。

感谢您的帮助。

最佳答案

这是一个想法;

您可以使用第一个索引创建一个字典,其中每个 ID 的状态为 1(假设 DataFrame 按 ID 排序):

d = df.loc[df["Status"]==1].drop_duplicates()
d = dict(zip(d["Id"], d.index))

然后您为每个 Id 创建一个列,其中第一个 status=1:

df["first"] = df["Id"].map(d)

最后,您删除索引小于 first 列的每一行:

df = df.loc[df.index<df["first"]]

关于python - 在 Pandas 中的特定列值之后删除 id 的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55545696/

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