2013-05-21 302 views
0

列表和CONCAT我想mulitply與numpy的陣列中的數據幀如下:循環遍歷pd.dataframe

import numpy as np 
from pandas import* 
import pandas as pd 

C = np.arange(30).reshape(5, 6) 

df = pd.DataFrame(np.arange(48).reshape((8, 6)), columns=list('abcdef')) 
pxc = df/df.shift(1) - 1 

def concatArrays(A, B): 
    cArrays_0 = np.sum(A[0,]*B, axis=1) 
    cArrays_1 = np.sum(A[1,]*B, axis=1) 
    cArrays_2 = np.sum(A[2,]*B, axis=1) 
    cArrays_3 = np.sum(A[3,]*B, axis=1) 
    cArrays_4 = np.sum(A[4,]*B, axis=1) 
    #(...) 

    pieces = [cArrays_0, cArrays_1, cArrays_2, cArrays_3, cArrays_4] #(...) 
    concatenated = concat(pieces, axis=1, join='outer') 
    return concatenated 

print concatArrays(C, pxc) 

我想創建一個循環,使「級聯是自動不管C中的列表數量,避免手寫每個cArray_i。

感謝名單

+1

*您希望將形狀'(5,6)'與形狀'(8,6)'形狀相乘? –

+0

我想用pxc中的每列乘以每個列表中的相應數字。 pxc中第一列(a)除以A的第一個列表中的第一個數字,然後將第二列乘以第二個數字等,直到df和ndaray的最後一列,創建一個數據幀。那麼在將np.sum,axis = 1應用於創建列的df之後,這將成爲列(ndarray?)。然後連接(?)將爲A中的每個列表創建的各列,創建最終的數據框,其索引與pxc相同。 – Pedro9

+0

不需要兩次輸入熊貓,只需輸入'pandas'就可以了,你可以從pandas import *' – askewchan

回答

0

強烈懷疑

def concatArrays(A, B): 

    pieces = [a*B for a in A] #(...) 
    concatenated = concat(pieces, axis=1, join='outer') 
    return concatenated 

會做的伎倆,但我期待它在迭代的數據幀而言這將取決於如果pandas的行爲。