我想提取下表中多年来的数据。数据采用 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/