繁体   English   中英

创建一个新列作为 Pandas DataFrame 的计数

[英]Create a new column as a count of the Pandas DataFrame

我有一个 Pandas DataFrame。 如何创建一个类似于 Pandas DataFrame 计数的新列,因为我已经将索引设为 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)返回DataFrame 中的行数,因此您可以调用内置的range函数创建一个从1到DataFrame 中的行数的范围,然后将其分配给新列。 为列分配范围时,它会自动转换为 Pandas 系列。

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

在这里,我们可以使用:

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

在这里,它的效率(超过 1 个数量级)比df['count'] = np.arange(1, 1 + len(df))后者直接构建一个具有预期值的 numpy 数组,但它可以是在更复杂的用例中很有用。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM