gpt4 book ai didi

pandas - 如果列值在数据框中没有一定数量的出现,如何随机复制行直到达到该计数?

转载 作者:行者123 更新时间:2023-12-04 10:36:46 25 4
gpt4 key购买 nike

说这就是我的数据框的样子

A   B
0 1 5
1 4 2
2 3 5
3 3 3
4 3 2
5 2 0
6 4 5
7 2 3
8 4 1
9 5 1

我希望 B 列中的每个唯一值至少出现 3 次。所以 B 值为 5 的行都不会重复。 B 列值为 0 的行被复制两次。其余的两行之一随机复制。

这是一个示例所需的输出
A   B
0 1 5
1 4 2
2 3 5
3 3 3
4 3 2
5 2 0
6 4 5
7 2 3
8 4 1
9 5 1
10 4 2
11 2 3
12 2 0
13 2 0
14 4 1

编辑:
选择要复制的行应随机选择

最佳答案

要随机选择行,我会使用 groupby applysample在每个组上。 x lambda 是每组 B ,所以我使用 reapeat - x.shape[0]查找需要创建的行数。可能有一些案例组B已经有超过 3 的行数,所以我使用 np.clip将负值强制为 0 . sample 在 0行与忽略它相同。最后,reset_index 和 append返回 df

repeats = 3
df1 = (df.groupby('B').apply(lambda x: x.sample(n=np.clip(repeats-x.shape[0], 0, np.inf)
.astype(int), replace=True))
.reset_index(drop=True))

df_final = df.append(df1).reset_index(drop=True)

Out[43]:
A B
0 1 5
1 4 2
2 3 5
3 3 3
4 3 2
5 2 0
6 4 5
7 2 3
8 4 1
9 5 1
10 2 0
11 2 0
12 5 1
13 4 2
14 2 3

关于pandas - 如果列值在数据框中没有一定数量的出现,如何随机复制行直到达到该计数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60141487/

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