向DataFrame添加许多行的有效方法

时间:2019-01-05 19:56:53

标签: python pandas performance append

我真的想加快我的代码。

我已经工作的代码遍历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

1 个答案:

答案 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