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

Python 更改dataframe索引值,同时保持其他列数据相同,python,pandas,Python,Pandas,我有一个4列251行的数据框和一个数字的级数索引,例如1000到1250。索引最初是为了帮助连接来自4个不同数据帧的数据。然而,一旦我把这4列放在一起,我想把索引改成一个从250到0的数字级数。这是因为我将对不同的数据集(4组)执行相同的操作,这些数据集将具有不同的索引,例如2000到2250或500到750,但都具有相同的行数。250到0是统一这些数据集的一种方式,但我不知道如何做到这一点。i、 e.我正在寻找用函数范围(250,0,-1)替换任何现有索引的东西 我试过使用下面的set_索引和

我有一个4列251行的数据框和一个数字的级数索引,例如1000到1250。索引最初是为了帮助连接来自4个不同数据帧的数据。然而,一旦我把这4列放在一起,我想把索引改成一个从250到0的数字级数。这是因为我将对不同的数据集(4组)执行相同的操作,这些数据集将具有不同的索引,例如2000到2250或500到750,但都具有相同的行数。250到0是统一这些数据集的一种方式,但我不知道如何做到这一点。i、 e.我正在寻找用函数范围(250,0,-1)替换任何现有索引的东西

我试过使用下面的set_索引和一大堆其他的尝试,它们总是会返回错误

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

在这个例子中,当我能够将df的索引设置为范围时,4列中的数据将更改为NaN,因为它们没有与新索引匹配的数据。如果这是初步的,我很抱歉,但我在python/pandas的世界里已经一周大了,在+10年内还没有编程,我花了2天的时间试图把这当成一个练习来解决,但现在是哭的时候了。。。叔叔

首先尝试将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
你可以这么做

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

还是我遗漏了什么?

感谢您的快速响应,我刚刚尝试过,我相信我遇到了某种类型的数据类型冲突。我可以将250:0作为一列添加到数据集中,set_index命令不会引发任何错误,但是当我查看数据帧时,我仍然使用250:0作为最后一列的旧索引。下面是我在执行set_index命令时得到的输出。我没有像您那样在代码中使用
inplace=True
参数,因此它实际上没有修改
df
,只返回设置了这些索引的新数据帧。添加那个参数,或者将结果赋给一个新变量,你应该很好。所有问题都解决了。感谢并抱歉我之前的回答不完整。是的,这个答案更好,因为它避免了在设置索引之前创建额外的列。