在带有随机字符串值的PANAS中插入新列

2022-05-12 00:00:00 python pandas dataframe series random

问题描述

我有一个DataFrame

     A B C
   0 1 2 3  
   1 2 3 3  
   2 3 2 1  

我需要在 pandas DataFrame中创建一个新列,其中‘yes’或‘no’随机填充此列。

     A B C  NEW
   0 1 2 3  yes
   1 2 3 3  no
   2 3 2 1  no

使用随机选项会导致每一行都有相同结果的列

     A B C  NEW
   0 1 2 3  no
   1 2 3 3  no
   2 3 2 1  no

我尝试了map、Apply和Applymap,但有一种更简单的方法。


解决方案

必须将新列设置为pd.Series,然后使用随机选项:

import random

df['NEW'] = pd.Series(random.choices(['yes','no'], weights=[1, 1], k=len(df), index=df.index)

随机选择将为每行选取此值之一。

权重分别设置选择"yes"或"no"的概率。如果您希望获得更高的"yes"机会,则必须增加第一个数字。

k设置系列的长度。它必须具有相同的DataFrame长度。

index设置为与df.index相同很重要,否则无论您是从更大的数据帧中对其进行切片,它都会填充Nan

相关文章