我不知道这一点。我正在做一些测试,并尝试将随机类别添加到数据帧中进行测试,但是当我这样做时,它将为所有行添加该类别,而不是随机分配它。
这是我的代码:
import random
catergory = ['dog', 'cat', 'monkey']
df['animal'] = random.choice(catergory)
df['animal'].value_counts()
输出:
monkey
monkey 124705
Name: animal, dtype: int64
我了解它在做什么(生成一次随机调用并将其应用于整个DF),但是如何获取它以为每一行生成随机值。
答案 0 :(得分:4)
使用np.random.choice
和等于数据帧长度的size
来生成给定大小的随机样本:
df['animal'] = np.random.choice(catergory, size=len(df))
示例:
np.random.seed(12345)
df = pd.DataFrame({'ColA': np.random.randint(1, 10, 10)})
catergory = ['dog', 'cat', 'monkey']
df['animal'] = np.random.choice(catergory, size=len(df))
df['animal'].value_counts()
结果:
monkey 5
cat 4
dog 1
Name: animal, dtype: int64