Python:平均分配字符串列

2024-06-26 14:30:29 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一列30万条线。它由19个独特的字符串组成。现在我只想选择该列中的5000个元素,但是每个字符串应该平均出现。当然,这受到该列中字符串的最小/最大出现次数的限制。你知道吗

我想也许我可以熊猫.facotrize,但我真的不知道如何掩盖列。有我不知道的numpy/pandas功能吗?你知道吗

如果我对字符串进行因式分解,结果是一样的:

strings=np.random.randint(19, size=300000)

现在我要设法屏蔽这个数组,使每个数相等地出现,“真”的数是5000。完美的模式是,如果我也能给出其中一个字符串出现在其他字符串上的因子,但这只是加法。你知道吗


Tags: 字符串功能numpy元素pandassizenprandom
1条回答
网友
1楼 · 发布于 2024-06-26 14:30:29

设置

np.random.seed([3, 1415])

n = 300_000
strings = np.random.choice([*'ABCDEFGHIJKLMNOPQRS'], size=n)

df = pd.DataFrame(dict(Col=strings))

pandas.DataFrame.sample

算出你需要的实际数字,然后从每组中抽取样本

g = df.groupby('Col')
mx = g.size().max()
nm = g.ngroups
k = min(5000 // nm, mx)

pd.concat([d.sample(k) for _, d in g])

相关问题 更多 >