创建特定大小的pandas数据框

use*_*015 4 python dataframe

在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的数据框,其中所有列都是数据类型对象.


unu*_*tbu 6

使用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列.