2016-06-09 33 views
2

我正在采取一个数据框,将其分成两个数据框,然后我需要更改索引值,以便没有数字大于总行数。有更简单的方法来改变熊猫数据框的索引值吗?

下面的代码:

dataset = pd.read_csv("dataset.csv",usecols['row_id','x','y','time'],index_col=0) 
splitvalue = math.floor((0.9)*786239) 
train = dataset[dataset.time < splitvalue] 
test = dataset[dataset.time >= splitvalue] 

下面是我做的改变。我想知道是否有更简单的方法:

test.index=range(test.shape[0]) 
test.index.rename('row_id',inplace=True) 

有没有更好的方法来做到这一点?

回答

3

尝试:

test = test.reset_index(drop=True).rename_axis('row_id') 
2

切片之前,您应该重洗你的数据....

dataset.reindex(np.random.permutation(dataset.index)) 

否则你偏置测试/车组。

+0

感谢您的建议。我没有意识到可以通过重新索引来完成洗牌。凉。 –

+0

@LarryFreeman,不要检查与新的数据框头..头排序索引,然后显示......驱使我坚持一会儿。 – Merlin

+0

如果我不检查head(),有什么替代方法? –

2

您可以直接分配一个新的Index对象覆盖索引:

test.index = pd.Index(np.arange(len(df)), name='row_id')