Skip to main content
 首页 » 编程设计

python之如何在 python 中使用循环有效地进行特征工程

2025年05月04日18jillzhang

我正在尝试执行以下操作:

df['SR1'] = df['Open'].pct_change(1) 
df['SR2'] = df['Open'].pct_change(2) 
df['SR3'] = df['Open'].pct_change(3) 
df['SR4'] = df['Open'].pct_change(4) 
df['SR5'] = df['Open'].pct_change(5) 
 
df['SR6'] = df['Open'].pct_change(6) 
df['SR7'] = df['Open'].pct_change(7) 
df['SR8'] = df['Open'].pct_change(8) 
df['SR9'] = df['Open'].pct_change(9) 
df['SR10'] = df['Open'].pct_change(10) 
 
df['SR11'] = df['Open'].pct_change(11) 
df['SR12'] = df['Open'].pct_change(12) 
df['SR13'] = df['Open'].pct_change(13) 
df['SR14'] = df['Open'].pct_change(14) 
df['SR15'] = df['Open'].pct_change(15) 
 
df['SR16'] = df['Open'].pct_change(16) 
df['SR17'] = df['Open'].pct_change(17) 
df['SR18'] = df['Open'].pct_change(18) 
df['SR19'] = df['Open'].pct_change(19) 
df['SR20'] = df['Open'].pct_change(20) 
 
df['SR30'] = df['Open'].pct_change(30) 
df['SR50'] = df['Open'].pct_change(50) 
df['SR70'] = df['Open'].pct_change(70) 
df['SR90'] = df['Open'].pct_change(90) 
 
df['SR110'] = df['Open'].pct_change(110) 
df['SR130'] = df['Open'].pct_change(130) 
df['SR150'] = df['Open'].pct_change(150) 
df['SR170'] = df['Open'].pct_change(170) 
df['SR190'] = df['Open'].pct_change(190) 
 
df['SR210'] = df['Open'].pct_change(210) 
df['SR230'] = df['Open'].pct_change(230) 
df['SR250'] = df['Open'].pct_change(250) 

它看起来愚蠢且低效。有什么很酷的方法可以创建一个函数来循环它吗?我只是无法将数字放在 pct_change() 的括号内。

请您参考如下方法:

为什么不用简单的 for 循环?

for n in list(range(1, 20)) + list(range(30, 270, 20)): 
    df[f'SR{n}'] = df['Open'].pct_change(n) 

注意:f 字符串表示法仅适用于 Python >= 3.6,并且等效于 'SR{}'.format(n)。