如何使用Python Pandas随机复制DataFrame每行0-5次?
使用Pandas实现每行随机复制0-5次
步骤1:导入依赖库
import pandas as pd import numpy as np
步骤2:构造输入数据集
根据你提供的输入数据,先创建对应的DataFrame:
data = { 'id': [1, 2, 3, 4], 'name': ['tim', 'jim', 'john', 'bill'] } df = pd.DataFrame(data)
步骤3:实现随机复制逻辑
核心思路是为每一行生成1到6次的重复次数(对应复制0到5次:重复1次就是保留原行、复制0次;重复6次就是原行加5次复制),再通过索引重复实现行复制:
# 为每行生成1-6的随机重复次数(randint左闭右开,所以参数是1,7) repeat_counts = np.random.randint(1, 7, size=len(df)) # 按次数重复行 result_df = df.loc[df.index.repeat(repeat_counts)] # 重置索引(可选,让索引连续) result_df = result_df.reset_index(drop=True)
查看结果
运行后打印result_df,就能得到类似你给出的输出示例,比如某次随机结果可能是:
id name 0 1 tim 1 1 tim 2 2 jim 3 3 john 4 3 john 5 3 john 6 3 john 7 4 bill 8 4 bill 9 4 bill
补充说明
- 如果需要固定随机结果方便调试,可在生成随机数前加
np.random.seed(xxx),比如np.random.seed(42),这样每次运行的复制次数都一致。 repeat_counts的取值范围1到6,刚好对应复制次数0到5,完全匹配需求。
内容的提问来源于stack exchange,提问作者Eisen
相关产品推荐
相关产品推荐

