2013-03-25 54 views
0

考慮下面的代碼:如何重新編制通過摺疊DataFrame創建的系列?

sfix = sub['fix'] # a pandas.Panel 
(sfix.minor_xs('tstop') - sfix.minor_xs('tstart')) # slicey slicey! 

輸出:

<class 'pandas.core.frame.DataFrame'> 
Int64Index: 804 entries, 0 to 803 
Data columns (total 8 columns): 
0 573 non-null values 
1 675 non-null values 
2 804 non-null values 
3 715 non-null values 
4 578 non-null values 
5 568 non-null values 
6 664 non-null values 
7 599 non-null values 
dtypes: float64(8) 

該輸出對應於爲每個包含在Panel對象的8個DataFrames的tstoptstart列之間的差異。

這些列中都含有相同類型的數據,我想他們堆到一個單一系列,ERGO:

s = pd.concat([df[i] for i in df]) 

這是一個良好的開端,但現在我所有的指標是重複8時間:

>>> s.ix[0] 

0  98 
0 184 
0 178 
0 188 
0 176 
0 234 
0 128 
0  82 
dtype: float64 

從這裏,我不能完全弄清楚如何重新索引我的系列使得指標去從0到len(s)。我試過以下,無濟於事:

s.reindex(copy=True) 
s.reindex(index=xrange(len(s)), copy=True) 

我錯過了什麼?

回答

1

這應該工作太

s = pd.concat([df[i] for i in df], ignore_index = True) 
+0

謝謝!這似乎正是我想要的。只是爲了加倍確定:這是否保留了數據的順序? – blz 2013-03-25 19:51:31

+0

我相信它(這項工作) - pd.concat([pd.DataFrame({0:[0]}),pd.DataFrame({0:[1]})],ignore_index = True) – user1827356 2013-03-25 20:18:31

2

IIUC,您可以使用reset_index(drop=True)

>>> s 
0  98 
0 184 
0 178 
0 188 
0 176 
0 234 
0 128 
0  82 
Dtype: float64 
>>> s.reset_index(drop=True) 
0  98 
1 184 
2 178 
3 188 
4 176 
5 234 
6 128 
7  82 
Dtype: float64 
相關問題