pandas 如何将值为1到len(df)的列添加到 Dataframe

a9wyjsp7  于 2023-06-20  发布在  其他
关注(0)|答案(4)|浏览(138)

我在dataframe(30行)中的索引是这样的:

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

索引不是严格递增的,因为 Dataframe 是sort()的输出。
我想添加一个列,它是系列:

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

我该怎么做呢?

h79rfbju

h79rfbju1#

怎么样:

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

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

df = df.reset_index()
6qqygrtg

6qqygrtg2#

我在试图做同样的事情时偶然发现了这个问题(我想)。我是这样做的:

df['index_col'] = df.index

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

vm0i2vca

vm0i2vca3#

不如这样:

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

这是你要找的吗?

xpcnnkqh

xpcnnkqh4#

要做到这一点的方法是这样的:
重置索引:

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.

基于列值对 Dataframe 进行排序:

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')

相关问题