0

考虑下面的代码:

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 个 DataFrame 中的每一个的tstop和列之间的差异。tstart

这些列都包含相同类型的数据,我想将它们堆叠成一个系列,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)

我错过了什么?

4

2 回答 2

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
于 2013-03-25T19:39:45.273 回答
1

这也应该工作

s = pd.concat([df[i] for i in df], ignore_index = True)
于 2013-03-25T19:40:53.603 回答