熊猫(python):如何将列添加到数据框以进行索引?

Posted

技术标签:

【中文标题】熊猫(python):如何将列添加到数据框以进行索引?【英文标题】:Pandas (python): How to add column to dataframe for index? 【发布时间】:2012-08-23 12:21:53 【问题描述】:

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

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

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

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

我该怎么做呢?

【问题讨论】:

【参考方案1】:

这个怎么样:

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.combine_first(df2) 将此 df 添加到现有数据帧中【参考方案2】:

怎么样:

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

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

df = df.reset_index()

【讨论】:

这个答案让我走到了我想要的地方,因为我已经有了一个想要替换的索引。在这种情况下,您可以补充:df = df.reset_index(drop=True) 使用np.arange而不是原生range,比如df['new_col'] = np.arange(1, df.shape[0] + 1)应该加快运行时间,尤其是在处理大型数据集时。【参考方案3】:

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

df['index_col'] = df.index

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

【讨论】:

不,那将是未排序的。 更多动态df[df.index.name] = df.index【参考方案4】:

这样做的方法是这样的:

重置索引:

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

【讨论】:

以上是关于熊猫(python):如何将列添加到数据框以进行索引?的主要内容,如果未能解决你的问题,请参考以下文章

将列标题添加到熊猫数据框..但是即使标题是相同的维度,NAN 也是所有数据

如何在熊猫中合并两个数据框以替换 nan

如何重新索引熊猫数据框以将起始索引值重置为零? [重复]

切片熊猫数据框以获取不连续的列

合并数据框以保留所有项目熊猫

如何防止熊猫数据框中的索引出现在excel中?