Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/357.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Python中计算数据帧中最后一行和所有其他行之间的时差_Python_Pandas_Loops_Datetime_Timedelta - Fatal编程技术网

在Python中计算数据帧中最后一行和所有其他行之间的时差

在Python中计算数据帧中最后一行和所有其他行之间的时差,python,pandas,loops,datetime,timedelta,Python,Pandas,Loops,Datetime,Timedelta,我有一堆数据帧都是这样的 DATE A B 2021-01-01 1 2 2021-01-05 1 2 2021-01-06 1 2 2021-01-10 1 2 2021-01-20 1 2 我想计算所有行和最后一行之间的时间差。这意味着我想创建另一列,其中包含该行与数据帧中最后一行之间的时间差。所以它应该是这样的: DATE A B

我有一堆数据帧都是这样的

   DATE        A     B    
2021-01-01     1     2   
2021-01-05     1     2
2021-01-06     1     2
2021-01-10     1     2
2021-01-20     1     2
我想计算所有行和最后一行之间的时间差。这意味着我想创建另一列,其中包含该行与数据帧中最后一行之间的时间差。所以它应该是这样的:

   DATE        A     B     timediff  
2021-01-01     1     2     19 days
2021-01-05     1     2     14 days
2021-01-06     1     2     13 days
2021-01-10     1     2     9 days
2021-01-20     1     2     0 days
有办法做到这一点吗?Date已经是datetime变量


谢谢

您可以减去最后一行并取绝对值:

df['timediff_days'] =df['DATE'].sub(df['DATE'].iloc[-1]).dt.days.abs()
或:

df['timediff'] = pd.Timedelta(0,unit='d')-df['DATE'].sub(df['DATE'].iloc[-1])

        DATE  A  B timediff
0 2021-01-01  1  2  19 days
1 2021-01-05  1  2  15 days
2 2021-01-06  1  2  14 days
3 2021-01-10  1  2  10 days
4 2021-01-20  1  2   0 days