Python实现按匹配规则从关联列表随机取值生成表格新列
解决方案
使用Python结合Pandas即可实现,性能支持大体量数据集,random.choice完全适配当前需求,具体实现如下:
实现逻辑
- 先基于现有
State和Food列构建映射字典,每个州对应其关联的所有去重后食物列表 - 遍历
State_New列,对每个州取值从映射字典中匹配对应的食物列表,随机选取一个值作为Food_New结果
完整代码
import pandas as pd import random # 读取数据,本地文件可替换为pd.read_csv("你的数据路径.csv")或pd.read_excel("你的数据路径.xlsx") df = pd.DataFrame({ 'State': ['CA', 'CA', 'PA', 'PA', 'PA'], 'Food': ['Burger', 'Fries', 'Soda', 'Pop', 'Soda'], 'State_New': ['PA', 'CA', 'CA', 'PA', 'PA'] }) # 构建州-食物列表映射,自动对每个州的食物去重 state_food_map = df.groupby('State')['Food'].unique().to_dict() # 生成随机的Food_New列 df['Food_New'] = df['State_New'].apply(lambda x: random.choice(state_food_map[x])) # 如需保存结果执行下行代码 # df.to_csv("输出结果路径.csv", index=False) print(df)
说明
- 映射字典仅需一次全表扫描即可生成,后续每行的随机取值都是O(1)复杂度,百万级数据也可快速处理
- 每次运行代码
Food_New列的取值会自动随机变动,符合要求
内容的提问来源于stack exchange,提问作者Logan
相关产品推荐
相关产品推荐

