计算 Python 中数据帧中最后一行与所有其他行之间的时间差
Calculate time difference between last row and all other rows in a dataframe in Python
我有一堆数据框都是这样的
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
有办法吗?日期已经是一个日期时间变量。
谢谢
您可以减去最后一行并取绝对值:
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
我有一堆数据框都是这样的
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
有办法吗?日期已经是一个日期时间变量。
谢谢
您可以减去最后一行并取绝对值:
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