Python 计算DataFrame中运行的总天数,并将值插入新列
新手问题 我有一个包含日期列表的数据框。我想计算日期的数量,并在一个新列中插入按行经过的总天数。我已经得到了一个插入计数的工作循环,但是它插入了整个列长度的计数。我发现我要做的是告诉它插入整个系列的长度,这样我就知道为什么出错了,但是我已经猜不出谷歌能找到我要找的信息 我所拥有的: 日期 日数 669 2020-06-01 2. 670 2020-06-02 2. 671 2020-06-03 2. 标准熊猫警告:在熊猫身上循环很少是个好主意。但是,以下是循环问题的解释: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
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'])
首先)感谢您的帮助,我现在将深入讨论我应该或不应该在熊猫中使用循环的问题。