如何为DataFrame生成含随机重复字符串的列
解决方法:为DataFrame生成指定字符串的随机列
你之前调用sample失败的核心原因是:候选字符串只有4个,而你要生成20个元素的列,不放回抽样(replace=False)最多只能生成4个不重复元素,完全满足不了20的长度要求。要生成可重复的随机序列,必须设置replace=True。
下面是两种可行的实现方式:
方法1:用NumPy的choice(更直接)
import pandas as pd import numpy as np # 定义候选字符串列表 animal_list = ['dog', 'cat', 'mouse', 'pig'] # 生成20个可重复的随机元素 random_series = np.random.choice(animal_list, size=20, replace=True) # 转为DataFrame df = pd.DataFrame({'animal': random_series})
方法2:用Pandas的sample
先把候选字符串转为Series,再通过抽样生成目标序列:
import pandas as pd # 候选字符串转为Series animal_series = pd.Series(['dog', 'cat', 'mouse', 'pig']) # 抽样20次,允许重复 random_series = animal_series.sample(n=20, replace=True, random_state=42).reset_index(drop=True) # 构建DataFrame df = pd.DataFrame({'animal': random_series})
参数说明
replace=True:必须设置,允许重复抽取元素,才能生成超过候选数量的样本random_state:可选参数,设置固定数值(比如42)可以让随机结果可复现
如果你的需求是不重复的随机排列,那最多只能生成4个元素的列,只需把replace=False,同时n=4即可:
unique_random_series = animal_series.sample(n=4, replace=False).reset_index(drop=True) df_unique = pd.DataFrame({'animal': unique_random_series})
内容的提问来源于stack exchange,提问作者Sara n
相关产品推荐
相关产品推荐

