gpt4 book ai didi

python - Pandas :将给定范围内的随机数分配给相等的列值

转载 作者:行者123 更新时间:2023-11-28 20:58:28 25 4
gpt4 key购买 nike

我正在处理一个大型数据集,其中一列有很长的整数,如下所示:

       Column_1        Column_2
1 A 12345123451
2 B 12345123451
3 C 12345123451
4 D 23456789234
5 E 23456789234
6 F 34567893456

这里重要的不是 Column_2 中的实际数字,而是当这些数字相同而 Column_1 不同时。我想从一系列较小的数字中随机重新分配 Column_2 的值,比如 (1, 999)。

       Column_1        Column_2
1 A 120
2 B 120
3 C 120
4 D 54
5 E 54
6 F 567

我的问题是想办法在 lambda 函数中描述 Column_2 中的每个相等值都需要相同的随机数。

最佳答案

您可以使用 np.random.choice 创建一个 1 到 999 之间的随机数数组,确保说 replace=False 这样您就不会得到任何重复,然后将 Column_2 映射到 Column_2 唯一值与随机数数组的字典映射:

import numpy as np 

nums = np.random.choice(range(1,999), size = df['Column_2'].nunique(), replace=False)

# If you prefer to use the random package rather than numpy, uncomment the following:
# import random
# nums = random.sample(range(1,999), df['Column_2'].nunique())

df['Column_2'] = df['Column_2'].map(dict(zip(df['Column_2'].unique(), nums)))

>>> df
Column_1 Column_2
1 A 274
2 B 274
3 C 274
4 D 842
5 E 842
6 F 860

解释:

您的数字数组如下所示:

>>> nums
array([274, 842, 860])

你的映射字典看起来像:

>>> dict(zip(df['Column_2'].unique(), nums))
{12345123451: 274, 23456789234: 842, 34567893456: 860}

因此,当您映射时,您是说将 12345123451 替换为 274,将 23456789234 替换为 842,以及等等……

关于python - Pandas :将给定范围内的随机数分配给相等的列值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51735106/

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