更改数据框索引值,同时保持其他列数据相同
Posted
技术标签:
【中文标题】更改数据框索引值,同时保持其他列数据相同【英文标题】:Change dataframe index values while keeping other column data same 【发布时间】:2013-08-22 04:17:57 【问题描述】:我有一个包含 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 天时间来尝试为自己解决这个问题,但现在是时候了哭……大叔!!
【问题讨论】:
【参考方案1】:尝试先将 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
【讨论】:
感谢您的快速响应,我刚刚尝试过,我相信我遇到了某种数据类型冲突。我可以将 250:0 作为一列添加到数据集,set_index 命令不会引发任何错误,但是当我查看数据框时,我仍然拥有以 250:0 作为最后一列的旧索引。下面是我在执行 set_index 命令时得到的输出 我没有像你那样在我的代码中使用inplace=True
参数,所以它实际上并没有修改df
,只是返回一个设置了这些索引的新数据框。添加该参数,或将结果分配给新变量,您应该会很好。
全部解决。感谢并抱歉我之前的回复不完整。【参考方案2】:
你可以这样做
df.index = range(250, 0, -1)
还是我错过了什么?
【讨论】:
是的,这个答案更好,因为它避免了在设置索引之前创建额外的列。以上是关于更改数据框索引值,同时保持其他列数据相同的主要内容,如果未能解决你的问题,请参考以下文章