使用np.random.choice为DataFrame每行加随机元素时全相同的问题
问题根源
你这段代码里的np.random.choice(list)只执行了一次,只会生成一个随机整数。当你把这个值和整个df.message列拼接时,这个单一值会被自动广播到DataFrame的每一行,自然所有行的随机元素都一模一样。
解决办法
要让每行都有不同的随机元素,得生成和DataFrame行数匹配的随机数组,再做拼接。这里给两种常用写法:
方法一:向量化生成(效率高,推荐)
# 先生成和df行数相同的随机数组 random_rows = np.random.choice(list, size=len(df)) # 把数组转成字符串后拼接 df['message'] = df['message'].astype(str) + "rowNumber=" + '"' + random_rows.astype(str) + '"'
方法二:逐行生成(适合小数据集)
如果数据集不大,也可以用apply逐行调用随机函数:
df['message'] = df['message'].astype(str).apply( lambda msg: msg + "rowNumber=" + '"' + str(np.random.choice(list)) + '"' )
内容的提问来源于stack exchange,提问作者peace
相关产品推荐
相关产品推荐

