更改数据框索引值,同时保持其他列数据相同

时间:2013-08-22 04:17:57

标签: python pandas

我有一个包含4列和251行的DataFrame,以及一个数字级数的索引,例如1000至1250。该索引最初是必要的,以帮助加入来自4个不同数据帧的数据。但是,一旦我将4列组合在一起,我想将索引更改为从250到0的数字级数。这是因为我将对不同的数据集(以4个为一组)执行相同的操作不同的指数,例如2000到2250或500到750,但都会有相同的行数。 250到0是一种统一这些数据集的方法,但我无法弄清楚如何做到这一点。即我正在寻找能够用函数范围(250,0,-1)替换任何现有索引的东西

我尝试过使用下面的set_index以及其他一些总是会返回错误的尝试,

df.set_index(range(250, 0, -1), inplace=True) 

并且在我能够将df的索引设置为范围的情况下,4列中的数据变为NaN,因为它们没有与新索引匹配的数据。我道歉,如果这是初步的,但我在蟒蛇/大熊猫的世界已经一周了,没有编程+ 10年,并花了2天时间试图把这个想象为自己作为一个练习,但它的时间哭......叔叔!!

2 个答案:

答案 0 :(得分:4)

首先尝试将250:0索引作为列引入,然后将它们设置为索引:

df = pd.DataFrame({'col1': list('abcdefghij'), 'col2': range(0, 50, 5)})
df['new_index'] = range(30, 20, -1)
df.set_index('new_index')

在:

  col1  col2  new_index
0    a     0         30
1    b     5         29
2    c    10         28
3    d    15         27
4    e    20         26
5    f    25         25
6    g    30         24
7    h    35         23
8    i    40         22
9    j    45         21

后:

          col1  col2
new_index           
30           a     0
29           b     5
28           c    10
27           d    15
26           e    20
25           f    25
24           g    30
23           h    35
22           i    40
21           j    45

答案 1 :(得分:4)

你可以做到

df.index = range(250, 0, -1)

或者我错过了什么?