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

Python 计算DataFrame中运行的总天数,并将值插入新列,python,pandas,Python,Pandas,新手问题 我有一个包含日期列表的数据框。我想计算日期的数量,并在一个新列中插入按行经过的总天数。我已经得到了一个插入计数的工作循环,但是它插入了整个列长度的计数。我发现我要做的是告诉它插入整个系列的长度,这样我就知道为什么出错了,但是我已经猜不出谷歌能找到我要找的信息 我所拥有的: 日期 日数 669 2020-06-01 2. 670 2020-06-02 2. 671 2020-06-03 2. 标准熊猫警告:在熊猫身上循环很少是个好主意。但是,以下是循环问题的解释: df['day\u n

新手问题

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

我所拥有的:

日期 日数 669 2020-06-01 2. 670 2020-06-02 2. 671 2020-06-03 2. 标准熊猫警告:在熊猫身上循环很少是个好主意。但是,以下是循环问题的解释:

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

要使用循环执行此操作,请迭代
df.itertuples()
,并在[row.Index,'day\u num']处分配所需的值

index=0
对于df.itertuples()中的行:
df.at[row.Index,'day_num']=索引
指数+=1
#日期天数
# 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'])
首先)

感谢您的帮助,我现在将深入讨论我应该或不应该在熊猫中使用循环的问题。