Python 更改dataframe索引值,同时保持其他列数据相同
我有一个4列251行的数据框和一个数字的级数索引,例如1000到1250。索引最初是为了帮助连接来自4个不同数据帧的数据。然而,一旦我把这4列放在一起,我想把索引改成一个从250到0的数字级数。这是因为我将对不同的数据集(4组)执行相同的操作,这些数据集将具有不同的索引,例如2000到2250或500到750,但都具有相同的行数。250到0是统一这些数据集的一种方式,但我不知道如何做到这一点。i、 e.我正在寻找用函数范围(250,0,-1)替换任何现有索引的东西 我试过使用下面的set_索引和一大堆其他的尝试,它们总是会返回错误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_索引和
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
,只返回设置了这些索引的新数据帧。添加那个参数,或者将结果赋给一个新变量,你应该很好。所有问题都解决了。感谢并抱歉我之前的回答不完整。是的,这个答案更好,因为它避免了在设置索引之前创建额外的列。