6

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

我试过使用下面的 set_index 和一大堆其他总是返回错误的尝试,

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

在我能够将 df 的索引设置为范围的情况下,4 列中的数据更改为 NaN,因为它们没有与新索引匹配的数据。如果这是初步的,我深表歉意,但我在 python/pandas 的世界里已经一周大了,10 岁以上还没有编程,并且花了 2 天时间来尝试为自己解决这个问题,但现在是时候了哭……大叔!!

4

2 回答 2

7

尝试首先将 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
于 2013-08-22T04:28:42.603 回答
6

你可以做

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

还是我错过了什么?

于 2015-05-28T21:21:56.270 回答