2017-08-03 75 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)) 

這將創建一個數據幀全南的所有列的數據類型的對象。