gpt4 book ai didi

python - 在 python 中对每个组进行 groupby 后采样

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

我有一个数据框如下:

index   accountid  transdate

0 116490 2018-10-01
1 116490 2018-07-01
2 116490 2018-09-01
3 116490 2018-08-01
4 123033 2018-10-01
5 123033 2018-07-01
6 123033 2018-09-01
7 123033 2018-08-01
8 114175 2018-10-01
9 114175 2018-07-01
10 114175 2018-09-01
11 114175 2018-08-01
12 112962 2018-10-01
13 112962 2018-07-01
14 112962 2018-09-01
15 112962 2018-08-01

我正在尝试从每组 accountid 中获取随机行数。例如,这里每个 accountid 都有 4 个 transdates,我试图根据 accountid 进行分组,并从每组中获取最少 1 行和最多 4 行。

预期输出:

index    accountid  transdate

0 116490 2018-10-01
1 116490 2018-07-01
3 116490 2018-08-01
4 123033 2018-10-01
5 123033 2018-07-01
8 114175 2018-10-01
9 114175 2018-07-01
10 114175 2018-09-01
11 114175 2018-08-01
12 112962 2018-10-01
13 112962 2018-07-01
15 112962 2018-08-01

我一直在按 accountid 分组并将 random.sample 应用于分组对象,但每次它都会返回每个组的固定行数。

最佳答案

您可以使用 pandas.Series.sample获取每个类别的随机样本,您可以设置要随机分布在 1 ... min(4, len(category)) 中的元素数量:

import random

def random_sample(x):
n = random.randint(1, min(4, len(x)))
return x.sample(n)

df.groupby("accountid").transdate.apply(random_sample)
# accountid
# 112962 13 2018-07-01
# 14 2018-09-01
# 15 2018-08-01
# 114175 10 2018-09-01
# 11 2018-08-01
# 116490 2 2018-09-01
# 0 2018-10-01
# 3 2018-08-01
# 123033 5 2018-07-01
# 4 2018-10-01
# 7 2018-08-01

关于python - 在 python 中对每个组进行 groupby 后采样,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53744465/

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