使用random.choice()从Pandas DataFrame获取随机姓名返回单个字母的问题
问题原因
你当前的代码逻辑出错了:for name in people['name']是遍历每一个姓名字符串,而rand.choice(name)会从单个姓名的字符集合里随机挑选字符,所以输出的是单个字母,而非完整姓名。
解决方案
方法1:用random模块直接从姓名列表中选择
把DataFrame的name列转换成列表,再用rand.choice从列表中选取完整元素:
import pandas as pd import random as rand people = pd.read_csv('persons.csv') # 将name列转为列表,随机选一个完整姓名 print(rand.choice(people['name'].tolist()))
如果需要多次随机选择(比如输出5个):
import pandas as pd import random as rand people = pd.read_csv('persons.csv') name_list = people['name'].tolist() # 循环输出5个随机姓名 for _ in range(5): print(rand.choice(name_list))
方法2:用Pandas自带的sample方法(更贴合Pandas用法)
Pandas的sample方法可以直接从列中随机抽取指定数量的元素:
import pandas as pd people = pd.read_csv('persons.csv') # 随机抽取1个完整姓名 print(people['name'].sample(n=1).iloc[0]) # 随机抽取3个完整姓名并转为列表 print(people['name'].sample(n=3).tolist())
内容的提问来源于stack exchange,提问作者Jacob
相关产品推荐
相关产品推荐

