我有一个列表users=['a','b','c','d']
我有一个包含 100 行的数据框 X。
我想用列表用户填充 X['users']
,这样
- 分布均匀。在上面的示例中,每个元素必须有 25 个条目
- 分发以随机方式完成。每次运行时它不应该有固定的分发模式。
abcdabcd、aaabbbcccddd 和 accbddab
都是有效的发行版。
我该如何解决这个问题?
最佳答案
将每个元素的 25 个 (users*25
) 传递到 np.random.Generator.choice
(或已弃用的 np.random.choice
)并设置 replace=False
:
users = list('abcd')
X = pd.DataFrame()
rng = np.random.default_rng(0)
X['users'] = rng.choice(users*25, size=100, replace=False)
# users
# 0 d
# 1 d
# 2 b
# 3 a
# ...
X.value_counts()
# users
# a 25
# b 25
# c 25
# d 25
# dtype: int64
在额外的运行中,我们得到了不同的采样,但每个元素始终为 25:
X['users'] = rng.choice(users*25, size=100, replace=False)
# users
# 0 b
# 1 b
# 2 c
# 3 c
# ...
X.value_counts()
# users
# a 25
# b 25
# c 25
# d 25
# dtype: int64
关于python - 将列表中的数据分配到 panda 数据框中的列中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/75932600/