2017-08-03 56 views
0

在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 

通知我可以通过传递在NcoI位参数specfiy数据帧的形状。然后我可以通过行或列(在这种情况下按行)填充它。

如果我在Python /大熊猫复制此,它很容易创建序列:

myData = [x**2 for x in range(5,11) ] 

然而,如何轻松地做出同样大小的数据帧? 我可以这样做:

myDF = pd.DataFrame(data = myData) 

但是,什么是指定列/行尺寸参数?

回答

5

使用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你被允许指定一个轴线的长度为-1reshape用任何有意义的整数代替-1。例如,如果myvec.size为6,并且一个轴的长度为3,则另一个轴的长度必须为6/3 = 2。因此-1被替换为2,因此myvec.reshape(-1, 3)返回形状为(2, 3)的数组 - 2行和3列。

+0

嗨,然后它总是填写“按行”? – user1357015

+0

默认情况下,'reshape'“按行填充”(在所谓的“C顺序”中)。如果你想“按列填充”,使用'myvec.reshape(-1,3,order ='F')'。 – unutbu

+0

完美 - 正是我需要的。 – user1357015

0

制作您希望大小的熊猫数据框的一种方法是在创建数据框时提供索引和列值。

df = pd.DataFrame(index=range(numRows),columns=range(numCols)) 

这将创建一个数据帧全南的所有列的数据类型的对象。