What’s new in 1.0.2 (March 12, 2020)

These are the changes in pandas 1.0.2. See Release notes for a full changelog including other versions of pandas.

Fixed regressions

Groupby

  • Fixed regression in groupby(..).agg() which was failing on frames with MultiIndex columns and a custom function (GH31777)

  • Fixed regression in groupby(..).rolling(..).apply() (RollingGroupby) where the raw parameter was ignored (GH31754)

  • Fixed regression in rolling(..).corr() when using a time offset (GH31789)

  • Fixed regression in groupby(..).nunique() which was modifying the original values if NaN values were present (GH31950)

  • Fixed regression in DataFrame.groupby raising a ValueError from an internal operation (GH31802)

  • Fixed regression in groupby(..).agg() calling a user-provided function an extra time on an empty input (GH31760)

I/O

  • Fixed regression in read_csv() in which the encoding option was not recognized with certain file-like objects (GH31819)

  • Fixed regression in DataFrame.to_excel() when the columns keyword argument is passed (GH31677)

  • Fixed regression in ExcelFile where the stream passed into the function was closed by the destructor. (GH31467)

  • Fixed regression where read_pickle() raised a UnicodeDecodeError when reading a py27 pickle with MultiIndex column (GH31988).

Reindexing/alignment

Other

Indexing with nullable boolean arrays

Previously indexing with a nullable Boolean array containing NA would raise a ValueError, however this is now permitted with NA being treated as False. (GH31503)

In [1]: s = pd.Series([1, 2, 3, 4])

In [2]: mask = pd.array([True, True, False, None], dtype="boolean")

In [3]: s
Out[3]: 
0    1
1    2
2    3
3    4
Length: 4, dtype: int64

In [4]: mask
Out[4]: 
<BooleanArray>
[True, True, False, <NA>]
Length: 4, dtype: boolean

pandas 1.0.0-1.0.1

>>> s[mask]
Traceback (most recent call last):
...
ValueError: cannot mask with array containing NA / NaN values

pandas 1.0.2

In [5]: s[mask]
Out[5]: 
0    1
1    2
Length: 2, dtype: int64

Bug fixes

Datetimelike

Categorical

I/O

  • Using pd.NA with DataFrame.to_json() now correctly outputs a null value instead of an empty object (GH31615)

  • Bug in pandas.json_normalize() when value in meta path is not iterable (GH31507)

  • Fixed pickling of pandas.NA. Previously a new object was returned, which broke computations relying on NA being a singleton (GH31847)

  • Fixed bug in parquet roundtrip with nullable unsigned integer dtypes (GH31896).

Experimental dtypes

Strings

Rolling

  • Fixed rolling operations with variable window (defined by time duration) on decreasing time index (GH32385).

Contributors

A total of 25 people contributed patches to this release. People with a “+” by their names contributed a patch for the first time.

  • Anna Daglis +

  • Daniel Saxton

  • Irv Lustig

  • Jan Škoda

  • Joris Van den Bossche

  • Justin Zheng

  • Kaiqi Dong

  • Kendall Masse

  • Marco Gorelli

  • Matthew Roeschke

  • MeeseeksMachine

  • MomIsBestFriend

  • Pandas Development Team

  • Pedro Reys +

  • Prakhar Pandey

  • Robert de Vries +

  • Rushabh Vasani

  • Simon Hawkins

  • Stijn Van Hoey

  • Terji Petersen

  • Tom Augspurger

  • William Ayd

  • alimcmaster1

  • gfyoung

  • jbrockmendel