Python 创建一个新列作为数据帧的计数

Python 创建一个新列作为数据帧的计数,python,pandas,dataframe,datetime,Python,Pandas,Dataframe,Datetime,我有一个熊猫数据框。我如何创建一个新的列,它类似于熊猫数据帧的计数,因为我已经将索引设置为Datatime 例如,以下代码可在本地PC上复制: import datetime import numpy dates = [ datetime.date(2019, 1, 13), datetime.date(2020, 5, 11), datetime.date(2018, 7, 24), datetime.date(2019, 3, 23), dateti

我有一个熊猫数据框。我如何创建一个新的列,它类似于熊猫数据帧的计数,因为我已经将索引设置为Datatime

例如,以下代码可在本地PC上复制:

import datetime
import numpy

dates = [
    datetime.date(2019, 1, 13),
    datetime.date(2020, 5, 11),
    datetime.date(2018, 7, 24),
    datetime.date(2019, 3, 23),
    datetime.date(2020, 2, 16)
]

data = {
    "a": [13.3,12.3,np.nan,10.3,np.nan],
    "b": [1,0,0,1,1],
    "c": ["no","yes","no","","yes"]
}

pd.DataFrame(index=dates,data=data)
现在,我想添加一个新列作为计数。大约1,2,3,4,5,直到数据结束

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

len(df)
返回数据帧中的行数,因此可以调用内置的
range
函数来创建从
1
到数据帧中的行数的范围,然后将其分配给新列。将范围分配给列时,它会自动转换为系列。

您可以使用
df.index
构建系列,并在将其分配给数据帧的列之前对其应用一些处理

在这里,我们可以使用:

df['count'] = pd.Series(1, index=df.index()).cumsum()

在这里,它的效率(超过1个数量级)远远低于直接用期望值构建numpy数组的df['count']=np.arange(1,1+len(df)),但它在更复杂的用例中可能有用。

df['count']=range(1,df.shape[0]+1)?Perfekt!这是有效的:)虽然这段代码可以回答这个问题,但提供关于它如何和/或为什么解决这个问题的额外上下文将提高答案的长期价值。