如何用字典中的随机值填充Pandas DataFrame的指定多个列
实现方案
你可以直接用下面的代码替换示例中<插入填充列的函数实现>的位置,完全贴合你的使用需求:
df.assign(**{col: np.random.choice(val_list, len(df)) for col, val_list in my_dict.items()})
这里通过字典推导式生成列名到随机值数组的映射,用**解包后传入DataFrame的assign方法,仅会修改你指定的列,其余列保持不变,也不会改动原始DataFrame。
如果需要复用该逻辑,可以封装成独立函数:
import pandas as pd import numpy as np def random_fill_columns(df: pd.DataFrame, fill_config: dict) -> pd.DataFrame: # 拷贝原始数据避免修改原表 res_df = df.copy() for col, optional_values in fill_config.items(): # 仅填充DataFrame中存在的列,避免传入不存在的列时报错 if col in res_df.columns: res_df[col] = np.random.choice(optional_values, size=len(res_df)) return res_df # 调用示例 my_dict = {'Col1': ['a', 'b', 'c', 'd'], 'Col2': ['k', 'l', 'e', 'f']} df = random_fill_columns(df, my_dict)
可选配置
- 如果需要无放回抽样(保证每个可选值仅出现一次),可以给
np.random.choice添加replace=False参数 - 如果需要固定每次生成的随机值,可在填充前设置随机种子:
np.random.seed(自定义整数种子)
内容的提问来源于stack exchange,提问作者Dan G
相关产品推荐
相关产品推荐

