python 如何查找数据类型为datetime64的两个日期之间的月数[ns]

np8igboo  于 2023-01-04  发布在  Python
关注(0)|答案(1)|浏览(214)

Dataframe 中有两个字段,都是datetime64[ns]
我以为我能做到...

df_hist['MonthsBetween'] = (df_hist.Last_Date - df_hist.Begin_Time) / pd.Timedelta(months=1)

一个字段只有数据,另一个字段有日期/时间,但两个字段的数据类型都是datetime 64 [ns]。我在Google上搜索了这个字段,它似乎应该可以工作,但我收到一条错误消息,说:

TypeError: '<' not supported between instances of 'str' and 'int'

我以为这两个都是datetime 64 [ns],而不是str或int。

mgdq6dx1

mgdq6dx11#

您可以使用to_period来计算月份,然后减去

df_hist['MonthsBetween'] = df_hist['Last_Date'].dt.to_period('M').astype(int) - df_hist['Begin_Time'].dt.to_period('M').astype(int)
df
Out[123]: 
                 Last_Date      Begin_Time  Months
0  2022-01-01 00:00:00 2022-03-01       2
1  2022-01-01 12:00:00 2022-03-02       2
2  2022-01-02 00:00:00 2022-03-03       2
3  2022-01-02 12:00:00 2022-03-04       2
4  2022-01-03 00:00:00 2022-03-05       2
5  2022-01-03 12:00:00 2022-03-06       2
6  2022-01-04 00:00:00 2022-03-07       2
7  2022-01-04 12:00:00 2022-03-08       2

日期列的d类型应为datetime64[ns]

df_hist.dtypes
Out[125]: 
Last_Date     datetime64[ns]
Begin_Time     datetime64[ns]
Months             int64
dtype: object

相关问题