我真的想加快我的代码。
我已经工作的代码遍历DataFrame并获取开始和结束年份。然后,将其添加到列表中。在循环结束时,我将附加到空的DataFrame。
rows = range(3560)
#initiate lists and dataframe
start_year = []
end_year = []
for i in rows:
start_year.append(i)
end_year.append(i)
df = pd.DataFrame({'Start date':start_year, 'End date':end_year})
我得到了期望的结果,但是很慢:
Start date End date
0 1 1
1 2 2
2 3 3
3 4 4
答案 0 :(得分:2)
是的,可以使其更快。诀窍是避免循环使用list.append
(或更糟糕的pd.DataFrame.append
)。您可以使用list(range(3560))
,但您可能会发现np.arange
的效率更高。在这里,您可以通过dict.fromkeys
将数组分配给多个序列:
df = pd.DataFrame(dict.fromkeys(['Start date', 'End date'], np.arange(3560)))
print(df.shape)
# (3560, 2)
print(df.head())
# Start date End date
# 0 0 0
# 1 1 1
# 2 2 2
# 3 3 3
# 4 4 4