Python如何基于现有DataFrame生成带新主键的伪造数据并合并
实现代码
首先导入需要的依赖库:
import pandas as pd import random import string
基于你的原始数据完成追加逻辑:
# 原始DataFrame df1 = pd.DataFrame({'id': ['1a', '2b', '3c'], 'name': ['Anna', 'Peter', 'John'], 'year': [1999, 2001, 1993]}) # 自定义需要生成的新数据条数,示例为4条和你给出的样例新增条数对应 new_data_num = 4 # 记录已存在的id用于去重,保证主键唯一 used_ids = set(df1['id']) new_data_list = [] for _ in range(new_data_num): # 生成唯一的新id while True: # 随机选原始id作为前缀 base_id = random.choice(df1['id']) # 生成随机小写字母后缀 random_suffix = random.choice(string.ascii_lowercase) new_id = base_id + random_suffix if new_id not in used_ids: used_ids.add(new_id) break # 随机从原始数据中选取name和year new_name = random.choice(df1['name']) new_year = random.choice(df1['year']) new_data_list.append({'id': new_id, 'name': new_name, 'year': new_year}) # 追加新数据到原DataFrame df1 = pd.concat([df1, pd.DataFrame(new_data_list)], ignore_index=True)
逻辑说明
- 用集合存储所有已使用的id,生成新id时循环校验避免重复,完全保证主键唯一性
- name、year字段都从原始数据的对应列随机选取,满足随机打乱重排的要求
- 只需修改
new_data_num的数值,即可自定义要生成的新数据条数 - 由于是随机生成,每次运行得到的新数据内容会有差异,但完全符合你给出的规则要求
内容的提问来源于stack exchange,提问作者Liselotte
相关产品推荐
相关产品推荐

