What’s new in 0.23.1 (June 12, 2018)#
This is a minor bug-fix release in the 0.23.x series and includes some small regression fixes and bug fixes. We recommend that all users upgrade to this version.
Starting January 1, 2019, pandas feature releases will support Python 3 only. See Dropping Python 2.7 for more.
Comparing Series with datetime.date
We’ve reverted a 0.23.0 change to comparing a
Series holding datetimes and a
datetime.date object (GH 21152).
In pandas 0.22 and earlier, comparing a Series holding datetimes and
datetime.date objects would coerce the
datetime.date to a datetime before comparing.
This was inconsistent with Python, NumPy, and
DatetimeIndex, which never consider a datetime and
In 0.23.0, we unified operations between DatetimeIndex and Series, and in the process changed comparisons between a Series of datetimes and
datetime.date without warning.
We’ve temporarily restored the 0.22.0 behavior, so datetimes and dates may again compare equal, but restore the 0.23.0 behavior in a future release.
To summarize, here’s the behavior in 0.22.0, 0.23.0, 0.23.1:
# 0.22.0... Silently coerce the datetime.date >>> import datetime >>> pd.Series(pd.date_range('2017', periods=2)) == datetime.date(2017, 1, 1) 0 True 1 False dtype: bool # 0.23.0... Do not coerce the datetime.date >>> pd.Series(pd.date_range('2017', periods=2)) == datetime.date(2017, 1, 1) 0 False 1 False dtype: bool # 0.23.1... Coerce the datetime.date with a warning >>> pd.Series(pd.date_range('2017', periods=2)) == datetime.date(2017, 1, 1) /bin/python:1: FutureWarning: Comparing Series of datetimes with 'datetime.date'. Currently, the 'datetime.date' is coerced to a datetime. In the future pandas will not coerce, and the values not compare equal to the 'datetime.date'. To retain the current behavior, convert the 'datetime.date' to a datetime with 'pd.Timestamp'. #!/bin/python3 0 True 1 False dtype: bool
In addition, ordering comparisons will raise a
TypeError in the future.
Fixed regression in the
DatetimeIndex.timeattributes in case of timezone-aware data:
DatetimeIndex.timereturned a tz-aware time instead of tz-naive (GH 21267) and
DatetimeIndex.datereturned incorrect date when the input date has a non-UTC timezone (GH 21230).
Bug preventing pandas from being importable with -OO optimization (GH 21071)
Fixed regression in constructors coercing NA values like
Noneto strings when passing
Fixed regression in merging on boolean index/columns (GH 21119).
pandas.core.groupby.GroupBy.bfill()where the fill within a grouping would not always be applied as intended due to the implementations’ use of a non-stable sort (GH 21207)
pandas.core.groupby.GroupBy.rank()where results did not scale to 100% when specifying
SparseArray.shapewhich previously only returned the shape
MultiIndex.set_names()where error raised for a
nlevels == 1(GH 21149)
MultiIndex.sort_index()which was not guaranteed to sort correctly with
level=1; this was also causing data misalignment in particular
DataFrame.stack()operations (GH 20994, GH 20945, GH 21052)
New keywords (sharex, sharey) to turn on/off sharing of x/y-axis by subplots generated with pandas.DataFrame().groupby().boxplot() (GH 20968)
A total of 30 people contributed patches to this release. People with a “+” by their names contributed a patch for the first time.
Adam J. Stewart
Adam Kim +
Chalmer Lowe +
Damini Satya +
Gabe Fernando +
Jeremy Schendel +
Joris Van den Bossche
Kalyan Gokhale +
Max Kanter +
Pyry Kovanen +
Uddeshya Singh +