熊猫(巨蟒) : 如何添加列到数据框索引?

我在数据框中的索引(有30行)的形式如下:

Int64Index([171, 174,173, 172, 199..............
....175, 200])

由于数据框架是 sort ()的输出,因此索引并没有严格地增加。 我想添加一个专栏,这是一个系列:

[1, 2, 3, 4, 5......................., 30]

我该怎么做呢?

299707 次浏览

这样吧:

from pandas import *


idx = Int64Index([171, 174, 173])
df = DataFrame(index = idx, data =([1,2,3]))
print df

它给了我:

     0
171  1
174  2
173  3

这就是你要找的吗?

这个怎么样:

df['new_col'] = range(1, len(df) + 1)

或者,如果您希望将索引作为排名并将原始索引存储为列:

df = df.reset_index()

我在尝试做同样的事情时偶然发现了这个问题(我认为)。以下是我是如何做到的:

df['index_col'] = df.index

然后,如果愿意,可以对新的索引列进行排序。

实现这一目标的方法是:

重置索引:

df.reset_index(drop=True, inplace=True)

对索引进行排序:

df.sort_index(inplace=True)

从列中设置新索引:

df.set_index('column_name', inplace=True)

从范围设置新索引:

df.index = range(1, 31, 1) #a range starting at one ending at 30 with a stepsize of 1.

根据列值对数据框进行排序:

df.sort_values(by='column_name', inplace=True)

重新分配变量同样有效——以及:

df=df.reset_index(drop=True)
df=df.sort_index()
df=df.set_index('column_name')
df.index = range(1, 31, 1) #a range starting at one ending at 30 with a stepsize of 1.
df=df.sort_values(by='column_name')