如何重新索引通过折叠DataFrame创建的系列?

时间:2013-03-25 19:19:05

标签: python pandas

请考虑以下代码:

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的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)

我错过了什么?

2 个答案:

答案 0 :(得分: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

答案 1 :(得分:1)

这也应该有用

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