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