如何将pandas DataFrame中的列提升为连续的幂

问题描述 投票:3回答:3

是否有一种Python方法将DataFrame(xRaw)中的列提升为连续的幂?是否有类似

的东西
xRaw[:,k] = xRaw.pow(k) for k in range(1,6)
python pandas numpy pow
3个回答
3
投票

我愿意:

for i in range(6):
    xRaw["power: "+str(i)] = xRaw[column_to_be_raised] ** i

这将生成一个新列,该列的基础是您要为给定范围内的每个指数提高的列。


9
投票

这是一个Vandermonde矩阵,其numpy具有np.vander的内置函数

如果有

np.vander

然后

s = pd.Series([1,2,3,4,5])

np.vander(s, 6)

要添加回array([[ 1, 1, 1, 1, 1, 1], [ 1, 2, 4, 8, 16, 32], [ 1, 3, 9, 27, 81, 243], [ 1, 4, 16, 64, 256, 1024], [ 1, 5, 25, 125, 625, 3125]]) ,可以使用df

concat

4
投票

数字广播

df = pd.concat([df, pd.DataFrame(vander)], axis=1)

重新分配

s.values**np.arange(6)[:,None]
Out[70]: 
array([[   1,    1,    1,    1,    1],
       [   2,    4,    8,   16,   32],
       [   3,    9,   27,   81,  243],
       [   4,   16,   64,  256, 1024],
       [   5,   25,  125,  625, 3125]], dtype=int64)
© www.soinside.com 2019 - 2024. All rights reserved.