我正在尝试创建一个由基于现有稳定序列的重复行填充的 Dataframe 。
例如,如果我有一个以3为单位从6增加到18的序列,则可以使用np.arange(6, 18, 3)
生成该序列,从而得到array([ 6, 9, 12, 15])
。
我该如何以这种方式生成 Dataframe 呢?
如果我想要重复6行,我怎么才能得到下面的内容?
0 1 2 3
0 6.0 9.0 12.0 15.0
1 6.0 9.0 12.0 15.0
2 6.0 9.0 12.0 15.0
3 6.0 9.0 12.0 15.0
4 6.0 9.0 12.0 15.0
5 6.0 9.0 12.0 15.0
6 6.0 9.0 12.0 15.0
创建该矩阵的原因是,我希望按行方式向该矩阵添加pd序列
2条答案
按热度按时间swvgeqrz1#
或者,
wbrvyc0a2#
以下是一个使用NumPy广播的解决方案,它避免了Python循环、列表和过多的内存分配(如np.repeat所做的):
要了解此解决方案为何比其他解决方案更高效,请参阅
np.broadcast_to()
文档:https://numpy.org/doc/stable/reference/generated/numpy.broadcast_to.html广播阵列中的多于一个元素可以引用单个存储位置。
这意味着,无论您在传递给Pandas之前创建了多少行,您实际上只是分配了一行,然后是多次引用该行数据的2D数组。
如果将上述内容赋给
df
,则可以说df.values.base
是单行--无论DataFrame中出现多少行,这都是唯一需要的存储空间。