计算DataFrame中运行的总天数,并将值插入新列

2024-03-28 13:23:24 发布

您现在位置:Python中文网/ 问答频道 /正文

新手问题

我有一个包含日期列表的数据框。我想计算日期的数量,并在一个新列中插入按行经过的总天数。我已经得到了一个插入计数的工作循环,但是它插入了整个列长度的计数。我发现我要做的是告诉它插入整个系列的长度,这样我就知道为什么出错了,但是我已经猜不出谷歌能找到我要找的信息

我所拥有的:

^{tb1}$

我想要得到的是:

^{tb2}$

我是如何做到这一点的:

index = 0
for row in df:
    df['day_num'] = index
    index = index + 1

我意识到这可能是通过设置df extract的索引值来实现的,我正在使用这种方法来获取我想要的值,这是关于理解如何如上所述插入值


2条回答

标准熊猫警告:在熊猫中循环很少是个好主意。但是,以下是循环问题的解释:

df['day_num'] = index是在每次迭代时将整个列设置为一个值index。这就是为什么在最后,整个专栏是2

要使用循环执行此操作,请迭代df.itertuples()并指定所需的值.at[row.Index, 'day_num']

index = 0
for row in df.itertuples():
    df.at[row.Index, 'day_num'] = index
    index += 1

#            date  day_num
# 669  2020-06-01        0
# 670  2020-06-02        1
# 671  2020-06-03        2

要只包含一个运行计数器,您只需执行以下操作

df['day_num']=range(len(df))

输出

    date    day_num
669 2020-06-01  0
670 2020-06-02  1
671 2020-06-03  2

要从数据帧中的第一天开始实际计算天数,可以执行以下操作

df['day_num']=(df['date'] - df['date'].iloc[0]).dt.days

(确保“日期”列是实际日期,即您可能希望首先执行df['date'] = pd.to_datetime(df['date'])

相关问题 更多 >