我正在尝试在Python中构建一个数据框,其中填充了1和0,取决于一列中的数字:
Date Hour
2005-01-01 1
2005-01-01 2
2005-01-01 3
2005-01-01 4
我想根据“小时”中的数字创建新列,并在每一列中填充1,如果该行等于“小时”中的值,则填充0。
Date Hour HE1 HE2 HE3 HE4
2005-01-01 1 1 0 0 0
2005-01-01 2 0 1 0 0
2005-01-01 3 0 0 1 0
2005-01-01 4 0 0 0 1
我可以用这段代码实现,但需要很长时间:
for x in range(1,5):
_HE = 'HE' + str(x)
for i in load.index:
load.at[i, _HE] = 1 if load.at[i,'Hour']==x else 0
我觉得这是使用 .apply() 来加速的一个绝佳应用(不是说笑),但我无法使它正常工作。
你如何来提高其运行速度?
.apply
通常不比for循环更快。.apply
在Python解释器层面上是一个for循环。 - juanpa.arrivillaga