如何用计算出的数字填充数组“列”

时间:2016-02-04 21:43:11

标签: python numpy pandas

我想用一系列计算的非平凡数填充可变长度的列,以便它可以匹配数据帧列中的一组数据。结果将是一个数据帧两列宽,一些大数字长(这里是20行长)。我知道如何计算这个系列:

while p < 20:
    r = p * 9890
    d.append(r)
    p +=1

但它会产生一个“水平”字符串:

print(d)

[0,9890,19780,29670,39560,49450,59340,69230,79120,89010,98900,108790,118680,128570,138460,148350,158240,168130,178020,187910]

如何将其设为“垂直”列?

6 个答案:

答案 0 :(得分:0)

嗯,你最初建立一个vanilla python列表,当然它没有行或列的概念,因为它本身就是1D。虽然我不熟悉pandas,假设它使用numpy数组,你可以执行以下操作:

d = numpy.array(d)       #convert to a numpy array
d = d[numpy.newaxis]     #convert from 1D to 2D
d = d.T                  #transpose to make a "column"

或者在一行中:

d = numpy.array(d)[numpy.newaxis].T

答案 1 :(得分:0)

使用python和pandas

df ['new'] = df ['datatoiterateover']。apply(function x:x)将把所有数据放在一个新列中。

答案 2 :(得分:0)

>>> import pandas as pd
>>> d = []
>>> for i in range(20):
...     d.append(i * 9890)
... 
>>> df = pd.DataFrame({'column_header': d})
>>> df.head()
   column_header
0              0
1           9890
2          19780
3          29670
4          39560
>>> 

答案 3 :(得分:0)

numpy可以非常干净地创建数组,可以直接分配到pandas.DataFrame列,也可以与现有DataFrame中的列进行比较。它

import numpy as np
...
d = np.arange(20)*980

您可以将d直接与DataFrame列进行比较,而不必关注其“方向”垂直或水平。

答案 4 :(得分:0)

使用numpy.arrays并切片:

a = np.array([0, 9890, 19780, 29670, 39560, 49450, 59340, 69230, 79120, 89010, 98900, 108790, 118680, 128570, 138460, 148350, 158240, 168130, 178020, 187910])

In [3]: a[:,None]
Out[3]:
array([[     0],
       [  9890],
       [ 19780],
       [ 29670],
       [ 39560],
       [ 49450],
       [ 59340],
       [ 69230],
       [ 79120],
       [ 89010],
       [ 98900],
       [108790],
       [118680],
       [128570],
       [138460],
       [148350],
       [158240],
       [168130],
       [178020],
       [187910]])

答案 5 :(得分:0)

from numpy import *
d=[]
p=0
while p < 20:
    r = p * 9890
    d.append(r)
    p +=1

result=array(d).reshape(20,1)