gpt4 book ai didi

python - 如何只保留每组 Pandas 数据框的前 n% 行?

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

我看到这个问题的一个变体要求将每个组的前 n 行保留在 pandas 数据框中,解决方案使用 n 作为绝对数字而不是此处的百分比 Pandas get topmost n records within each group .但是,在我的数据框中,每个组中的行数不同,我想保留每个组的前 n% 行。我将如何解决这个问题?

最佳答案

您可以在 groupby 之前构造一个 bool 系列的标志和过滤器。首先让我们创建一个示例数据框并查看第一个系列中每个唯一值的行数:

np.random.seed(0)
df = pd.DataFrame(np.random.randint(0, 2, (10, 3)))

print(df[0].value_counts())

0 6
1 4
Name: 0, dtype: int64

然后定义一个分数,例如低于 50%,构造 bool 级数进行过滤:

n = 0.5

g = df.groupby(0)
flags = (g.cumcount() + 1) <= g[1].transform('size') * n

然后应用条件,将索引设置为第一个系列并(如果需要)对索引进行排序:

df = df.loc[flags].set_index(0).sort_index()

print(df)

1 2
0
0 1 1
0 1 1
0 1 0
1 1 1
1 1 0

如您所见,生成的数据帧只有 3 个 0 索引和 2 个 1 索引,在每种情况下都是原始数据帧中数量的一半。

关于python - 如何只保留每组 Pandas 数据框的前 n% 行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53356187/

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