2016-01-06 65 views
0

我有以下的數據(這只是一小部分,也有實際的數據21行):連接多個行到一個單排在熊貓

wt_tmin wt_tmax wt_prec wt_sol_rad  wt_ET 
0 33.142857 52.714286 0.031429 114.000000 0.102857  
1 40.142857 66.857143 0.280000 172.714286 0.192857 
2 41.714286 67.142857 0.001429 179.714286 0.191429   

我想所有的行串聯到一個排像如下:

0   1   2   3   4  5   6    7  8  9   11  12   13  14   15   
33.142857 52.714286 0.031429 114.000000 0.102857 40.142857 66.857143 0.280000 172.714286 0.192857 41.714286 67.142857 0.001429 179.714286 0.191429 

這裏就是我試圖做的:

# K is a pandas dataframe with the data 
KE = pd.concat([K.icol(0), K.icol(1), K.icol(2), K.icol(3), K.icol(4)], axis=1).T 

但是這並沒有給我的德西紅色的結果。請幫助

回答

2

我會通過values下降到numpyreshape它一排,然後進行從一個新的框架:

>>> pd.DataFrame(df.values.reshape(1, -1)) 
      0   1   2 3   4   5   6  7 \ 
0 33.142857 52.714286 0.031429 114 0.102857 40.142857 66.857143 0.28 

      8   9   10   11  12   13  14 
0 172.714286 0.192857 41.714286 67.142857 0.001429 179.714286 0.191429 

.reshape(1, -1)基本意思是「重塑爲1行和多列如有必要(-1)「。

2
df = df.stack().to_frame().T 
df.columns = list(range(len(df.columns))) 

df = pd.DataFrame(df.stack().to_frame().values).T 

會給你:

  0   1   2 3   4   5   6  7 \ 
0 33.142857 52.714286 0.031429 114 0.102857 40.142857 66.857143 0.28 

      8   9   10   11  12   13  14 
0 172.714286 0.192857 41.714286 67.142857 0.001429 179.714286 0.191429 
0

如果你並不真的需要一個數據幀,可以使用numpy.array.flatten

>>> d = pandas.DataFrame([[1, 2], [3, 4], [5, 6]]) 
>>> d 
    0 1 
0 1 2 
1 3 4 
2 5 6 
>>> d.as_matrix().flatten() 
array([1, 2, 3, 4, 5, 6]) 
1

你可以使用熊貓melt那麼你將不需要撥打電話pd.DataFrame

In [1470]: pd.melt(df, var_name='var', value_name='0').drop('var', axis=1).T 
Out[1470]: 
      0   1   2   3   4   5   6 \ 
0 33.142857 40.142857 41.714286 52.714286 66.857143 67.142857 0.031429 

    7   8 9   10   11  12  13  14 
0 0.28 0.001429 114 172.714286 179.714286 0.102857 0.192857 0.191429