
本文介绍如何使用 NumPy 和 Pandas 的向量化操作,高效地为 DataFrame 中多个命名规律的列(如 fan1_rpm 至 fan14_rpm)一次性初始化相同范围、同长度的随机整数,避免重复赋值语句。
本文介绍如何使用 numpy 和 pandes 的向量化操作,高效地为 dataframe 中多个命名规律的列(如 fan1_rpm 至 fan14_rpm)一次性初始化相同范围、同长度的随机整数,避免重复赋值语句。
在数据预处理或模拟测试场景中,常需为多个结构相似的列批量填充随机整数。若手动逐列赋值(如 df['fan1_rpm'] = ...),不仅冗长易错,也违背 Python 的“简洁即美”原则。更 Pythonic 的方式是利用 NumPy 的广播能力与 Pandas 的列批量赋值机制,实现一次生成、批量写入。
核心思路如下:
-
动态生成列名列表:利用列表推导式按命名规则构造
['fan1_rpm', 'fan2_rpm', ..., 'fan14_rpm']; -
批量生成随机数组:调用
np.random.randint(low, high, size)生成形状为(n_rows, n_cols)的二维数组; -
直接赋值给多列:通过
df[column_list] = array语法,Pandas 会自动按列顺序对齐并写入。
✅ 示例代码(推荐写法):
import pandas as pd
import numpy as np
# 假设已有空 DataFrame 或需初始化的 df(含 30 行)
df = pd.DataFrame(index=range(30))
n_cols = 14
cols = [f"fan{i}_rpm" for i in range(1, n_cols + 1)]
# 一行完成全部列的随机初始化
df[cols] = np.random.randint(5675, 5725, size=(len(df), n_cols))⚠️ 注意事项:
-
np.random.randint(low, high)的high是左闭右开区间,即生成[5675, 5725)内的整数(含 5675,不含 5725)。若需包含 5725,请将high改为5726; -
size参数必须为元组(n_rows, n_cols),不可省略括号(如(30, 14)),否则会生成一维数组,导致列对齐失败; - 确保目标列名在
df中已存在或允许新增列(如本例中df初始化为空,Pandas 会自动创建新列); - 如需复现结果,建议设置随机种子:
np.random.seed(42)(放在生成前)。
? 进阶提示:若列名模式更复杂(如混合 fan, temp, voltage),可将列名列表预先定义为变量,或用正则/配置字典驱动,保持逻辑清晰与可维护性。批量初始化不仅是代码行数的减少,更是向量化思维的体现——让数据操作真正“以数组为中心”。

















