python - 在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
有没有办法做到这一点?Date 已经是一个日期时间变量。
谢谢
解决方案
您可以减去最后一行并取绝对值:
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
推荐阅读
- c# - 如何检查输入的数据是否存在于 SQLite 中?
- macos - 无法在 Mac OS 上通过 HTTP 从容器外部连接到 Clickhouse
- ios - 如何在可编码中忽略 nil json 值
- netbeans - NetBeans 10:在 dist/lib 中缺少外部库
- jquery - 在现有数组中添加额外的元素和值
- continuum - 如何连续配置团队?
- c - 如何修复不退出while循环以在子进程中获取管道数据?
- c# - rsa c# 中的公钥和主键是什么样的?
- ruby - 如何像在 C 或 C++ 代码中一样拆分 Ruby 代码
- c# - Windows 启动后应用程序找不到设置或图像文件