[英]Pandas Difference Between Dates in Months
我有一个具有以下值的数据框日期列
2015-01-01
2015-02-01
2015-03-01
2015-07-01
2015-08-01
2015-10-01
2015-11-01
2016-02-01
我想找出这些值在几个月内的差异,如下所示
date_dt diff_mnts
2015-01-01 0
2015-02-01 1
2015-03-01 1
2015-07-01 4
2015-08-01 1
2015-10-01 2
2015-11-01 1
2016-02-01 3
我试图使用diff()
方法来计算天数,然后转换为astype('timedelta64(M)')
。 但是在那些情况下,当天数少于30时-将月份差异值显示为0。请让我知道,如果有任何简单的内置函数,在这种情况下我可以尝试。
选项1
更改周期并致电diff
。
df
Date
0 2015-01-01
1 2015-02-01
2 2015-03-01
3 2015-07-01
4 2015-08-01
5 2015-10-01
6 2015-11-01
7 2016-02-01
df.Date.dtype
dtype('<M8[ns]')
df.Date.dt.to_period('M').diff().fillna(0)
0 0
1 1
2 1
3 4
4 1
5 2
6 1
7 3
Name: Date, dtype: int64
选项2
或者,在dt.month
上调用diff
,但是您需要考虑一年中的差距(由于@galaxyan,解决方案得到了改善!)-
i = df.Date.dt.year.diff() * 12
j = df.Date.dt.month.diff()
(i + j).fillna(0).astype(int)
0 0
1 1
2 1
3 4
4 1
5 2
6 1
7 3
Name: Date, dtype: int64
需要注意的是(感谢发现它)这对于一年多的差距不会起作用。
请尝试以下步骤
.month
方法获取月份号 示例代码看起来像这样
df['diff_mnts'] = date_dt.month - date_dt.shift().month
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.