pandas 在列中随机分布字符串

kupeojn6  于 2023-04-10  发布在  其他
关注(0)|答案(2)|浏览(136)

我有一个这样的数据集

Name        Age
Aaron       42
Steve       44
Richard     29

我必须创建一个新的列,我必须使用字符串填充该列..列名将是'vaccinated_or_not',它应该有值'是','否','信息丢失','未提供','正在进行中'...所以,我必须填写这一列'vaccinated_or_not'使用这5个字符串随机...有人可以帮助我如何实现它。
最终的数据集应该是这样的:

Name        Age   Vaccinaited_or_not
Aaron       42      Yes
Steve       44      Info Missing
Richard     29      No
u5rb5r59

u5rb5r591#

使用numpy.random.choice

import numpy as np

L = ['Yes', 'No', 'Info Missing','Not Provided','In Progress']
df['Vaccinaited_or_not'] = np.random.choice(L, size=len(df))

print (df)
      Name  Age Vaccinaited_or_not
0    Aaron   42       Not Provided
1    Steve   44        In Progress
2  Richard   29                Yes
p5cysglq

p5cysglq2#

使用np.random.choice

choices = ['Yes', 'No', 'Info Missing', 'Not Provided', 'In Progress']
df['Vaccinaited_or_not'] = np.random.choice(choices, len(df))
print(df)

# Output
      Name  Age Vaccinaited_or_not
0    Aaron   42        In Progress
1    Steve   44       Not Provided
2  Richard   29       Info Missing

您还可以提供权重:

choices = ['Yes', 'No', 'Info Missing', 'Not Provided', 'In Progress']
weights = [0.2, 0.2, 0.4, 0.1, 0.1]  # sum=1
df['Vaccinaited_or_not'] = np.random.choice(choices, len(df), p=weights)

最佳实践:使用RandomGenerator

choices = ['Yes', 'No', 'Info Missing', 'Not Provided', 'In Progress']
weights = [0.2, 0.2, 0.4, 0.1, 0.1]  # sum must be 1
rng = np.random.default_rng(seed=2023)  # for reproducible case
df['Vaccinaited_or_not'] = rng.choice(choices, len(df), p=weights)

权重说明:使用权重/概率对于理解数据很重要:

x = pd.Series(rng.choice(choices, 10000, p=weights))
x.value_counts(normalize=True).plot.bar(rot=0, title='10000 samples')

输出:x1c 0d1x

相关问题