如何在Python中将子集行位置重置为行位置0

时间:2015-09-29 18:38:56

标签: python pandas

说我有一个数据框:

DF = pd.DataFrame({'Number':np.arange(9)})

哪个收益率:

    Number
0   0
1   1
2   2
3   3
4   4
5   5
6   6
7   7
8   8

然后我想用代码将其子集化为3个不同的块:

V1 = DF.query('Number > -1 and Number < 3')
V2 = DF.query('Number > 2 and Number < 6')
V3 = DF.query('Number > 5 and Number < 9')

提供3个新表:

V1

    Number
0   0
1   1
2   2

V2

    Number
3   3
4   4
5   5

V3

    Number
6   6
7   7
8   8

如何编写代码以将每个数据帧的行重置回位置0,以便:

V1

    Number
0   0
1   1
2   2

V2

    Number
0   3
1   4
2   5

V3 =

    Number
0   6
1   7
2   8

谢谢。

2 个答案:

答案 0 :(得分:2)

您可以尝试这样做,将原始数据帧切割为3个新数据帧:

V1 = DF[(DF.Number > -1) & (DF.Number < 3)]
V2 = DF[(DF.Number > 2) & (DF.Number < 6)]
V3 = DF[(DF.Number > 5) & (DF.Number < 9)]

然后重置所需数据帧的索引:

V2 = V2.reset_index(drop=True)
V3 = V3.reset_index(drop=True)

答案 1 :(得分:1)

正如EdChum所述,“在每个切片上调用reset_index(drop=True)”。

所以:

DF = pd.DataFrame({'Number':np.arange(9)})

V1 = DF.query('Number > -1 and Number < 3')
V2 = DF.query('Number > 2 and Number < 6')
V3 = DF.query('Number > 5 and Number < 9')

V1.reset_index(drop=True)
V2.reset_index(drop=True)
V3.reset_index(drop=True)

收率:

    Number
0   0
1   1
2   2

    Number
0   3
1   4
2   5

    Number
0   6
1   7
2   8