繁体   English   中英

将一个组划分为 n 并在 python 中为每个组添加块号

[英]Divide a group into n and add block numbers for each group in python

我有下表:

A栏 B栏
一个 12
32
C 44
D 76
99
F 123
G 65
H 87
76
Ĵ 231
ķ 80
l 55
27
n 67

我想将此表划分为“n”(n = 4,此处为)组,并添加另一列与组名。 output 应如下所示:

A栏 B栏 C栏
一个 12 1
32 1
C 44 1
D 76 1
99 2
F 123 2
G 65 2
H 87 2
76 3
Ĵ 231 3
ķ 80 3
l 55 4
27 4
n 67 4

我这么努力是为了什么?

TGn = 4
idx = set(df.index // TGn)

treatment_groups = [i for i in range(1, n+1)]
df['columnC'] = (df.index // TGn).map(dict(zip(idx, treatment_groups)))

这不能正确拆分组,不确定我哪里出错了。 我该如何纠正?

假设您的样本大小正好除以 n(即sample_size%n为 0):

import numpy as np
groups = range(1,n+1)

df['columnC'] = np.repeat(groups,int(len(df)/n))

如果您的样本大小未完全除以 n(即sample_size%n不为 0):

# Assigning the remaining rows to random groups
df['columnC'] = np.concatenate(
                [np.repeat(groups,int(len(df)/n)), 
                 np.random.randint(1, high=n, size=int(len(df)%n), dtype=int)])

# Assigning the remaining rows to group 'm'
df['columnC'] = np.concatenate(
                [np.repeat(groups,int(len(df)/n)), 
                 np.repeat([m],int(len(df)%n)), dtype=int)])

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM