2016-02-04 54 views
0

我想用一系列計算的非平凡數填充可變長度的列,以便它可以匹配數據幀列中的一組數據。結果將是一個數據幀兩列寬由一些大數字(這裏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]

我該如何讓這個「垂直」列?

回答

0

那麼你最初構建的是一個香草python列表,當然這個列表沒有行或列的概念,因爲它本質上是一維的。雖然我不熟悉的大熊貓,假設它使用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 
0

使用python和熊貓

DF ['new'] = df ['datatoiterateover']。apply(函數x:x)將把所有的數據放在一個新列中。

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 
>>> 
0

numpy可以非常乾淨地創建陣列,並且可以在現有的DataFrame直接分配到一個pandas.DataFrame柱或與列進行比較。它

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

您可以直接比較dDataFrame列,你不必與它的「方向」垂直或水平關心你。

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]]) 
0
from numpy import * 
d=[] 
p=0 
while p < 20: 
    r = p * 9890 
    d.append(r) 
    p +=1 

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