如何基于现有列自动随机生成超100个新数据列?(Python/Numpy/Pandas)
随机组合列生成新数据的自动化实现方法
基于Pandas+Numpy的解决方案
可以用Pandas结合Numpy快速实现无固定规则的随机列组合,自动生成大量新数据列,完全满足生成100+新列的需求。
以下是可直接运行的代码示例:
import pandas as pd import numpy as np # 替换为你的原始数据(示例中模拟5列随机数据) np.random.seed(42) # 固定随机种子,方便复现结果 df = pd.DataFrame(np.random.randn(100, 5), columns=[f"col{i}" for i in range(1, 6)]) # 设置要生成的新列数量 target_new_cols = 100 # 定义可选的列间运算(可根据需求自行扩展) available_ops = [ lambda x, y: x + y, lambda x, y: x - y, lambda x, y: x * y, lambda x, y: x / (y + 1e-8), # 加极小值避免除零错误 lambda x, y: np.maximum(x, y), lambda x, y: np.minimum(x, y), lambda x, y: np.sqrt(np.abs(x)) + np.sqrt(np.abs(y)) ] # 批量生成新列 for idx in range(target_new_cols): # 随机挑选两个不同的原始列 col_a, col_b = np.random.choice(df.columns, size=2, replace=False) # 随机选择一种运算 selected_op = np.random.choice(available_ops) # 计算并添加新列 new_col_name = f"rand_col_{idx+1}" df[new_col_name] = selected_op(df[col_a], df[col_b]) # 验证结果:原始5列+100新列,共105列 print(df.shape)
核心要点说明
- 随机性可控:通过
np.random.seed()固定随机逻辑,结果可复现;若需要每次生成不同组合,删除该行即可。 - 运算扩展:可以自由添加更多运算(如幂运算、对数、三角函数等),进一步丰富新列的多样性。
- 单列变换支持:如果需要基于单列生成新列,可修改逻辑,随机挑选单列并应用单变量运算(如
lambda x: x**2、lambda x: np.log(np.abs(x)+1))。
内容的提问来源于stack exchange,提问作者방준호
相关产品推荐
相关产品推荐

