Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

BUG: round, ceil, floor returning incorrect results with Division By Zero warning in pandas-2.0 #52761

Closed
2 of 3 tasks
galipremsagar opened this issue Apr 18, 2023 · 3 comments · Fixed by #52841
Closed
2 of 3 tasks
Labels
Bug Non-Nano datetime64/timedelta64 with non-nanosecond resolution

Comments

@galipremsagar
Copy link

Pandas version checks

  • I have checked that this issue has not already been reported.

  • I have confirmed this bug exists on the latest version of pandas.

  • I have confirmed this bug exists on the main branch of pandas.

Reproducible Example

In [1]: import pandas as pd

In [2]: s = pd.Series(["2020-05-31 08:00:00", "2000-12-31 04:00:05", "1800-03-14 07:30:20"], dtype='datetime64[ms]')

In [3]: s
Out[3]: 
0   2020-05-31 08:00:00
1   2000-12-31 04:00:05
2   1800-03-14 07:30:20
dtype: datetime64[ms]

In [4]: s.dt.round('U')
/nvme/0/pgali/envs/cudfdev/lib/python3.10/site-packages/pandas/core/arrays/datetimelike.py:2006: RuntimeWarning: divide by zero encountered in divmod
  result_i8 = round_nsint64(values, mode, nanos)
Out[4]: 
0   1970-01-01
1   1970-01-01
2   1970-01-01
dtype: datetime64[ms]

Issue Description

Performing a rounding operation of resolution lesser than the dtype, or when there is sub-second data and the rounding resolution is a sub-second data should ideally be a no-op. Instead we seem to be running into division by zero scenario and returning incorrect results.

Expected Behavior

In [3]: s.dt.round('U')
Out[3]: 
0   2020-05-31 08:00:00
1   2000-12-31 04:00:05
2   1800-03-14 07:30:20
dtype: datetime64[ms]

Installed Versions

In [5]: pd.show_versions()
/nvme/0/pgali/envs/cudfdev/lib/python3.10/site-packages/_distutils_hack/init.py:33: UserWarning: Setuptools is replacing distutils.
warnings.warn("Setuptools is replacing distutils.")

INSTALLED VERSIONS

commit : 478d340
python : 3.10.10.final.0
python-bits : 64
OS : Linux
OS-release : 4.15.0-76-generic
Version : #86-Ubuntu SMP Fri Jan 17 17:24:28 UTC 2020
machine : x86_64
processor : x86_64
byteorder : little
LC_ALL : None
LANG : en_US.UTF-8
LOCALE : en_US.UTF-8

pandas : 2.0.0
numpy : 1.23.5
pytz : 2023.3
dateutil : 2.8.2
setuptools : 67.6.1
pip : 23.1
Cython : 0.29.34
pytest : 7.3.1
hypothesis : 6.72.0
sphinx : 5.3.0
blosc : None
feather : None
xlsxwriter : None
lxml.etree : None
html5lib : None
pymysql : None
psycopg2 : None
jinja2 : 3.1.2
IPython : 8.12.0
pandas_datareader: None
bs4 : 4.12.2
bottleneck : None
brotli :
fastparquet : None
fsspec : 2023.4.0
gcsfs : None
matplotlib : None
numba : 0.56.4
numexpr : None
odfpy : None
openpyxl : None
pandas_gbq : None
pyarrow : 11.0.0
pyreadstat : None
pyxlsb : None
s3fs : 2023.4.0
scipy : 1.10.1
snappy :
sqlalchemy : 1.4.46
tables : None
tabulate : 0.9.0
xarray : None
xlrd : None
zstandard : None
tzdata : 2023.3
qtpy : None
pyqt5 : None

@galipremsagar galipremsagar added Bug Needs Triage Issue that has not been reviewed by a pandas team member labels Apr 18, 2023
@galipremsagar
Copy link
Author

cc: @mroeschke

@galipremsagar galipremsagar changed the title BUG: round returning incorrect results with Division By Zero warning in pandas-2.0 BUG: round, ceil, floor returning incorrect results with Division By Zero warning in pandas-2.0 Apr 18, 2023
@jbrockmendel
Copy link
Member

on main this raises ZeroDivisionError, which is at least slightly better than silently giving incorrect results. PR to fix this would be welcome.

@mroeschke mroeschke added Non-Nano datetime64/timedelta64 with non-nanosecond resolution and removed Needs Triage Issue that has not been reviewed by a pandas team member labels Apr 18, 2023
@Lokeshrathi
Copy link

If someone is working on this, can we please connect and work on this. As I am a newbie here and would love to learn and explore pandas, since I use it on a day-to-day basis.

I am fine with any hour of the day. :-)

galipremsagar added a commit to rapidsai/cudf that referenced this issue Apr 26, 2023
A fix for pandas-dev/pandas#52761 has been merged by @mroeschke , this PR xfails the pytests conditionally for `2.0.0` and passes for rest of the versions.

This PR fixes 27 pytests: 
```
= 404 failed, 88221 passed, 2044 skipped, 959 xfailed, 165 xpassed in 442.21s (0:07:22) =
```

On `pandas_2.0_feature_branch`:
```
= 431 failed, 88221 passed, 2044 skipped, 932 xfailed, 165 xpassed in 456.25s (0:07:36) =
```
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Bug Non-Nano datetime64/timedelta64 with non-nanosecond resolution
Projects
None yet
Development

Successfully merging a pull request may close this issue.

4 participants