实现此目的的一种方法是
>>> pd.DataFrame(np.array([[2, 3, 4]]), columns=['A', 'B', 'C']).append(df, ignore_index=True)
Out[330]:
A B C
0 2 3 4
1 5 6 7
2 7 8 9
通常,最简单的方法是附加数据帧,而不是序列。在您的情况下,由于您希望新行位于“顶部”(具有起始ID),并且没有功能pd.prepend()
,因此我首先创建新的数据框,然后追加旧的数据框。
ignore_index
会忽略数据框中旧的正在进行的索引,并确保第一行实际上以index开头,1
而不是以index重启0
。
典型的免责声明:Cetero censeo ...追加行是一种效率很低的操作。如果您关心性能,并且可以某种方式确保首先创建具有正确(较长)索引的数据框,然后仅将另一行插入该数据框,则绝对应该这样做。看到:
>>> index = np.array([0, 1, 2])
>>> df2 = pd.DataFrame(columns=['A', 'B', 'C'], index=index)
>>> df2.loc[0:1] = [list(s1), list(s2)]
>>> df2
Out[336]:
A B C
0 5 6 7
1 7 8 9
2 NaN NaN NaN
>>> df2 = pd.DataFrame(columns=['A', 'B', 'C'], index=index)
>>> df2.loc[1:] = [list(s1), list(s2)]
到目前为止,我们拥有您所拥有的df
:
>>> df2
Out[339]:
A B C
0 NaN NaN NaN
1 5 6 7
2 7 8 9
但是现在您可以按如下所示轻松插入该行。由于空间是预先分配的,因此效率更高。
>>> df2.loc[0] = np.array([2, 3, 4])
>>> df2
Out[341]:
A B C
0 2 3 4
1 5 6 7
2 7 8 9
s1.values
而不是,list(s1)
因为您将使用创建一个全新的列表list(s1)
。