Python Pandas-如何从序列创建 Dataframe

hc2pp10m  于 2022-09-18  发布在  Java
关注(0)|答案(2)|浏览(151)

我正在尝试创建一个由基于现有稳定序列的重复行填充的 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序列

swvgeqrz

swvgeqrz1#

pd.DataFrame([np.arange(6, 18, 3)]*7)

或者,

pd.DataFrame(np.repeat([np.arange(6, 18, 3)],7, axis=0))
0   1   2   3
0   6   9   12  15
1   6   9   12  15
2   6   9   12  15
3   6   9   12  15
4   6   9   12  15
5   6   9   12  15
6   6   9   12  15
wbrvyc0a

wbrvyc0a2#

以下是一个使用NumPy广播的解决方案,它避免了Python循环、列表和过多的内存分配(如np.repeat所做的):

pd.DataFrame(np.broadcast_to(np.arange(6, 18, 3), (6, 4)))

要了解此解决方案为何比其他解决方案更高效,请参阅np.broadcast_to()文档:https://numpy.org/doc/stable/reference/generated/numpy.broadcast_to.html

广播阵列中的多于一个元素可以引用单个存储位置。

这意味着,无论您在传递给Pandas之前创建了多少行,您实际上只是分配了一行,然后是多次引用该行数据的2D数组。

如果将上述内容赋给df,则可以说df.values.base是单行--无论DataFrame中出现多少行,这都是唯一需要的存储空间。

相关问题