如何为pandas DataFrame新增一列16位随机字母数字混合字符串
错误原因
原有写法仅执行了一次uuid.uuid4()生成逻辑,得到单个固定字符串后赋值给整列,因此所有行的id取值完全一致。要实现每行对应独立的随机值,需要针对每行单独执行一次随机字符串生成逻辑。
正确实现方案
方案1:列表推导式(性能最优,推荐使用)
import pandas as pd import uuid # 初始数据 data = [['Apr 2'], ['Jan 1'], ['Jan 18']] df = pd.DataFrame(data, columns = ['date']) # 生成和DataFrame行数等长的随机字符串列表,直接赋值给新列 df['id'] = [uuid.uuid4().hex.upper()[:16] for _ in range(len(df))]
方案2:apply行级处理(逻辑更直观)
# 对每行单独执行随机字符串生成逻辑 df['id'] = df.apply(lambda _: uuid.uuid4().hex.upper()[:16], axis=1)
两种方案生成的id均为大写字母+数字组成的16位随机字符串,且每行取值相互独立,可满足绝大多数场景的使用需求。
内容的提问来源于stack exchange,提问作者PyBoss
相关产品推荐
相关产品推荐

