Python 创建一个新列作为数据帧的计数
我有一个熊猫数据框。我如何创建一个新的列,它类似于熊猫数据帧的计数,因为我已经将索引设置为Datatime 例如,以下代码可在本地PC上复制: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
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!这是有效的:)虽然这段代码可以回答这个问题,但提供关于它如何和/或为什么解决这个问题的额外上下文将提高答案的长期价值。