python - 如何在 python 中使用循环有效地进行特征工程?
问题描述
我正在尝试执行以下操作:
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)
.
推荐阅读
- mysql - 将 MySQL 数据库连接到复制和粘贴的数据目录
- html - 使用css将鼠标悬停在另一个div标签上时如何显示隐藏的div标签
- three.js - THREE.JS ShaderMaterial 超出了我的网格
- json - jq:如何根据对象中的数据将对象从数组传递到不同的文件?
- python - Pygame 逼真的角度
- python - urllib.request 上的 Python 404
- c++ - 无法在 C++ 中使用邻接表来表示图形
- kernel - 在 HP DL380 G4 上安装 Gentoo 无法安装内核源
- android - 无法在 firebase 16.0.2 中保存新数据
- java - 如何在回收站视图中放置横幅