Pandas如何为DataFrame每行生成不同的10位随机字符串
错误原因
你当前代码中,等号右侧的随机字符串生成逻辑只会执行1次,得到1个固定的10位随机字符串,pandas会将该值统一填充到整个列的所有行,因此所有行的取值完全一致。
解决方案
方法1:apply逐行生成(中小数据量适用)
逻辑简单易读,适合行数较少的场景:
import random from string import ascii_letters import pandas as pd # 定义固定长度随机英文字符串生成函数 def generate_random_str(length=10): return ''.join(random.choice(ascii_letters) for _ in range(length)) # 对每行单独执行生成逻辑,得到独立的随机字符串 df['ff'] = df.apply(lambda x: generate_random_str(), axis=1)
方法2:向量化生成(百万级大表适用)
用numpy实现向量化操作,避免逐行循环的性能开销,大尺寸DataFrame下运行效率远高于apply方案:
import numpy as np from string import ascii_letters row_count = len(df) str_length = 10 char_list = list(ascii_letters) # 批量生成所有位置的随机字符 random_char_arr = np.array(char_list)[np.random.randint(0, len(char_list), size=(row_count, str_length))] # 按行拼接字符得到完整随机字符串 df['ff'] = np.apply_along_axis(''.join, 1, random_char_arr)
以上两种方案运行后,df['ff']的每一行都会生成独立的10位随机英文字符串,符合预期输出效果。
内容的提问来源于stack exchange,提问作者Sylv99
相关产品推荐
相关产品推荐

