首页 > 解决方案 > 在 pandas 中插入一个带有随机字符串值的新列

问题描述

我有一个数据框

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

我需要在 pandas DataFrame 中创建一个新列,并随机填充“是”或“否”。

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

使用 random.choice 会产生一列,每一行的结果都相同

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

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

标签: pythonpandasdataframerandomseries

解决方案


您必须将新列设置为 pd.Series,然后使用 random.choices:

import random

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

random.choices将为每一行选取其中一个值。

weights分别设置选择“是”或“否”的概率。如果您希望获得更高的“是”机会,即,您必须增加第一个数字。

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

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


推荐阅读