我试图计算月份之间的循环距离,以了解两个进程之间的解耦合。所以我有一个数据框,其中有一些列,我不会用循环的方式计算它们之间的差异。月份不是日期,而是从1到12的数字。 比如说
month1 month2
6 8
12 3
8 5
1 11
如果我真的这么做
month2 - month1
我有一些问题:
8 - 6 = 2
和{
3 - 12 = -9
和{3
和{
所以我试着
^{pr2}$但是开始和结束必须是日期,而且似乎不可能仅仅用月份忽略年份和日期来定义日期。如果我将month1和month2定义为日-月-年的日期,那么12月和1月之间的差将是11,而不是我需要的1。在
所以可以把数字定义为月份?或者类似于使用monthmod
而不管年份的东西?或者只是用其他方法来做?
有什么建议吗?在
您可以使用:
从而得到预期的结果:
^{pr2}$对更新后的问题的回答:
这应该是有效的:
或者用更少的行数:
^{pr2}$返回:
其中,
diff_between_months(1,7)
中的减号可以通过将if diff < -6
更改为if diff <= -6
来修复。在对老问题的回答(月份之间的绝对差异):
min(abs(month1 - month2), month1 - month2 + 12, month2 - month1 + 12)
应该能做到。在作为函数:
这就回来了
如果出于某种原因,您的月份可能大于12,请添加
[month1, month2] = [month1 % 12, month2 % 12]
相关问题 更多 >
编程相关推荐