我试图确定两个月之间的差异是偶数还是奇数月份。
我使用了命令:
import pandas as pd
(pd.to_datetime('2019-01-01').to_period('M') - pd.to_datetime('2018-08-01').to_period('M')) % 2
这似乎在 python 3.6.7 中有效,但在另一个 python 3.7.3 环境中我收到错误:
>>> import pandas as pd
>>> (pd.to_datetime('2019-01-01').to_period('M') - pd.to_datetime('2018-08-01').to_period('M')) % 2
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: unsupported operand type(s) for %: 'MonthEnd' and 'int'
我正在尝试找出哪个包会在这里产生差异,或者是否有另一种方法可以实现我想要的功能,并且可以在两个版本中工作?
我查看了我安装的软件包,发现有一些版本差异,但我不知道哪个版本会产生差异。
不起作用的环境有python 3.7.3、pandas 0.24.2和numpy-base 1.16.2。工作环境有python 3.6.7,pandas 0.22.0,但没有任何版本的numpy-base。两者都有 python-dateutil 2.8.0 和 numpy 1.16.2。
问题是周期减法 https://pandas.pydata.org/pandas-docs/stable/whatsnew/v0.24.0.html#period-subtraction在 pandas 0.24+ 中:
从一个期间减去另一个期间将得到一个日期偏移量。而不是整数(GH21314)
解决方案是属性.n
:
a = (pd.to_datetime('2019-01-01').to_period('m') - pd.to_datetime('2018-08-01').to_period('m'))
print (a)
<5 * MonthEnds>
print (a.n)
5
print (a.n % 2)
1
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)