在R中,我可以这样做:
myvec <- seq(from = 5, to = 10)^2
mydf <- data.frame(matrix(data = myvec, ncol = 3,byrow = TRUE))
> mydf
X1 X2 X3
1 25 36 49
2 64 81 100
Run Code Online (Sandbox Code Playgroud)
注意我可以通过传入一个ncol参数来指定数据框的形状.然后我可以通过byrow或bycolumn(在这种情况下按行)填充它.
如果我要在Python/Pandas中复制它,那么创建序列就很容易了:
myData = [x**2 for x in range(5,11) ]
Run Code Online (Sandbox Code Playgroud)
但是,如何轻松制作相同大小的数据帧?我可以这样做:
myDF = pd.DataFrame(data = myData)
Run Code Online (Sandbox Code Playgroud)
但是,指定列/行尺寸的参数是什么?
小智 14
制作所需大小的pandas数据帧的一种方法是在创建数据帧时提供索引和列值.
df = pd.DataFrame(index=range(numRows),columns=range(numCols))
Run Code Online (Sandbox Code Playgroud)
这将创建一个充满nan的数据框,其中所有列都是数据类型对象.
使用reshape指定的列(或行)的数量:
import numpy as np
import pandas as pd
myvec = np.arange(5, 11)**2
mydf = pd.DataFrame(myvec.reshape(-1, 3))
Run Code Online (Sandbox Code Playgroud)
产量
0 1 2
0 25 36 49
1 64 81 100
Run Code Online (Sandbox Code Playgroud)
在呼叫时,reshape您可以指定一个轴的长度为-1.
用任何有意义的整数reshape替换-1.例如,如果myvec.size是6,并且一个轴的长度为3,则另一个轴的长度必须为6/3 = 2.因此将-1其替换为2,因此myvec.reshape(-1, 3)返回一个形状的数组--2 (2, 3)行和3列.