python - 从数据中提取年份

标签 python time

我想提取下表中多年来的数据。数据采用 datetime64 格式,您可以在下面看到这些数据

import numpy as np
import pandas as pd

data = {
         'Date': ['2021-01-01','2020-01-01','2019-01-01','2028-01-01']
        }

df = pd.DataFrame(data, columns = ['Date'
                                   ])
df['Date']= df['Date'].astype('datetime64')

df

现在我想从 2023-01-01 中减去这个数据,以计算这个日期与表中的数据之间相差了多少年。为此,我尝试使用下面的行,但不幸的是这不起作用

df['Date']-['2023-01-01'].astype('datetime64')

有人可以帮我解决这个问题吗?

最佳答案

您需要将引用转换为 Timestamp :

df['days'] = df['Date'] - pd.Timestamp('2023-01-01')

# or
df['days'] = df['Date'].sub(pd.Timestamp('2023-01-01'))

输出:

        Date       days
0 2021-01-01  -730 days
1 2020-01-01 -1096 days
2 2019-01-01 -1461 days
3 2028-01-01  1826 days

对于相反的操作:

df['days'] = pd.Timestamp('2023-01-01') - df['Date']

# or
df['days'] = df['Date'].rsub(pd.Timestamp('2023-01-01'))

输出:

        Date       days
0 2021-01-01   730 days
1 2020-01-01  1096 days
2 2019-01-01  1461 days
3 2028-01-01 -1826 days

请注意,转换日期的首选方法是 to_datetime .

对于年份,您可以进一步除以np.timedelta64(1, 'Y'):

df['years'] = df['Date'].sub(pd.Timestamp('2023-01-01')).div(np.timedelta64(1, 'Y'))

输出:

        Date     years
0 2021-01-01 -1.998672
1 2020-01-01 -3.000746
2 2019-01-01 -4.000082
3 2028-01-01  4.999418

关于python - 从数据中提取年份,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/75107534/

相关文章:

java - Java Thread 中日期时间的重新计算

date - 在 Dart 中仅比较 DateTimes 的日期

python - 是否有可能使 cuda 具有确定性?

python - 使用 with - python 打开超过 1 个文件

python canvas.find_overlapping 似乎有倒置的 y 轴

r - 如何从 strptime() 中仅提取时间?

sql - 计算SQL Server中记录的时间差

time - 如何将纪元以来的 Unix 时间/时间转换为标准日期和时间?

python - 在python中打开和关闭文件

python - 如果行中的其他条目匹配,则更改 Python Pandas 数据框中的条目