1.4.0の新機能 (2022年1月22日)#

これらはpandas 1.4.0での変更点です。他のバージョンのpandasを含む完全な変更ログについては、リリースノートを参照してください。

機能強化#

警告メッセージの改善#

以前は、警告メッセージがpandasライブラリ内の行を指す場合がありました。スクリプトsetting_with_copy_warning.pyを実行すると、

import pandas as pd

df = pd.DataFrame({'a': [1, 2, 3]})
df[:2].loc[:, 'a'] = 5

pandas 1.3では

.../site-packages/pandas/core/indexing.py:1951: SettingWithCopyWarning:
A value is trying to be set on a copy of a slice from a DataFrame.

これにより、警告がどこで生成されているかを特定するのが困難でした。現在、pandasはコールスタックを検査し、警告を引き起こしたpandasライブラリ外の最初の行を報告します。上記のスクリプトの出力は次のようになります。

setting_with_copy_warning.py:4: SettingWithCopyWarning:
A value is trying to be set on a copy of a slice from a DataFrame.

Indexが任意のExtensionArrayを保持できるようになりました#

これまで、カスタムのExtensionArraypd.Indexに渡すと、配列がobject dtypeにキャストされていました。現在、Indexは任意のExtensionArrayを直接保持できるようになりました (GH 43930)。

以前の動作:

In [1]: arr = pd.array([1, 2, pd.NA])

In [2]: idx = pd.Index(arr)

以前の動作では、idxはオブジェクトdtypeでした。

以前の動作:

In [1]: idx
Out[1]: Index([1, 2, <NA>], dtype='object')

新しい動作では、元のdtypeを保持します。

新しい動作:

In [3]: idx
Out[3]: Index([1, 2, <NA>], dtype='Int64')

これにはSparseArrayが1つの例外で、pandas 2.0までは引き続きnumpy dtypeにキャストされます。その時点で、他のExtensionArrayと同様にdtypeを保持します。

Styler#

Stylerは1.4.0でさらに開発されました。以下の一般的な機能強化が行われています。

  • インデックスのスタイル設定と書式設定が、Styler.apply_index()Styler.applymap_index()、およびStyler.format_index()で追加されました。これらは、データ値のスタイル設定と書式設定に既に使用されているメソッドのシグネチャをミラーリングし、HTML、LaTeX、およびExcel形式の両方で機能します (GH 41893GH 43101GH 41993GH 41995)

  • 新しいメソッドStyler.hide()は、Styler.hide_index()Styler.hide_columns()を非推奨にします (GH 43758)

  • キーワード引数levelnamesStyler.hide()に追加されました (そして暗黙的に非推奨のメソッドStyler.hide_index()Styler.hide_columns()にも)。これにより、MultiIndexとIndex名の可視性をさらに制御できます (GH 25475GH 43404GH 43346)

  • Styler.export()およびStyler.use()は、v1.2.0およびv1.3.0で追加されたすべての機能に対応するように更新されました (GH 40675)

  • pd.options.stylerカテゴリのグローバルオプションが拡張され、書式設定、エンコーディング、HTMLおよびLaTeXレンダリングに対応するデフォルトのStylerプロパティを設定できるようになりました。以前はStylerdisplay.html.use_mathjaxに依存していましたが、これはstyler.html.mathjaxに置き換えられました (GH 41395)

  • 特定のキーワード引数(例:caption)の検証 (GH 43368)

  • 以下に記録されている様々なバグ修正

さらに、HTML固有のレンダリングに特化した機能強化もいくつかあります。

  • Styler.bar()は、アライメントと表示を制御するための追加引数を導入しました (GH 26070GH 36419)。また、入力引数widthheightも検証します (GH 42511)

  • Styler.to_html()は、キーワード引数sparse_indexsparse_columnsbold_headerscaptionmax_rowsmax_columnsを導入しました (GH 41946GH 43149GH 42972)

  • Styler.to_html()は、パフォーマンス向上のため、非表示のテーブル要素のCSSStyleルールを省略します (GH 43619)

  • カスタムCSSクラスを文字列置換なしで直接指定できるようになりました (GH 43686)

  • 新しいhyperlinks書式設定キーワード引数により、ハイパーリンクを自動的にレンダリングする機能 (GH 45058)

LaTeX固有の機能強化もいくつかあります。

  • Styler.to_latex()はキーワード引数environmentを導入し、これにより別のjinja2テンプレートを介して特定の「longtable」エントリも許可されます (GH 41866)

  • multirowパッケージを含める必要なしに、LaTeXでの単純なスパース化が可能になりました (GH 43369)

  • キーワード引数により、MultiIndex行のスパース化のためのclineサポートが追加されました (GH 45138)

pyarrowに基づく新しいCSVエンジンによるマルチスレッドCSV読み込み#

pandas.read_csv()は、引数としてengine="pyarrow"を受け入れるようになりました(pyarrow 1.0.1以上が必要)。これにより、pyarrowがインストールされているマルチコアマシンでCSV解析を高速化できます。詳細については、I/Oドキュメントを参照してください。(GH 23697GH 43706)

ローリングおよび拡張ウィンドウのランク関数#

RollingExpandingrank関数が追加されました。新しい関数は、DataFrame.rank()methodascending、およびpctフラグをサポートします。method引数は、minmax、およびaverageのランキングメソッドをサポートします。例:

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

In [5]: s.rolling(3).rank()
Out[5]: 
0    NaN
1    NaN
2    2.0
3    2.0
4    3.0
5    1.5
dtype: float64

In [6]: s.rolling(3).rank(method="max")
Out[6]: 
0    NaN
1    NaN
2    2.0
3    2.0
4    3.0
5    2.0
dtype: float64

Groupbyの位置インデックス#

各グループの末尾を基準とした位置範囲を指定できるようになりました。

DataFrameGroupBy.head()SeriesGroupBy.head()DataFrameGroupBy.tail()、およびSeriesGroupBy.tail()の負の引数が正しく機能し、それぞれ各グループの末尾と先頭を基準とした範囲を返すようになりました。以前は、負の引数は空のフレームを返していました。

In [7]: df = pd.DataFrame([["g", "g0"], ["g", "g1"], ["g", "g2"], ["g", "g3"],
   ...:                    ["h", "h0"], ["h", "h1"]], columns=["A", "B"])
   ...: 

In [8]: df.groupby("A").head(-1)
Out[8]: 
   A   B
0  g  g0
1  g  g1
2  g  g2
4  h  h0

DataFrameGroupBy.nth()SeriesGroupBy.nth()は、スライスまたは整数のリストとスライスを受け入れるようになりました。

In [9]: df.groupby("A").nth(slice(1, -1))
Out[9]: 
   A   B
1  g  g1
2  g  g2

In [10]: df.groupby("A").nth([slice(None, 1), slice(-1, None)])
Out[10]: 
   A   B
0  g  g0
3  g  g3
4  h  h0
5  h  h1

DataFrameGroupBy.nth()およびSeriesGroupBy.nth()は、インデックス表記を受け入れるようになりました。

In [11]: df.groupby("A").nth[1, -1]
Out[11]: 
   A   B
1  g  g1
3  g  g3
5  h  h1

In [12]: df.groupby("A").nth[1:-1]
Out[12]: 
   A   B
1  g  g1
2  g  g2

In [13]: df.groupby("A").nth[:1, -1:]
Out[13]: 
   A   B
0  g  g0
3  g  g3
4  h  h0
5  h  h1

DataFrame.from_dictおよびDataFrame.to_dictに新しい'tight'オプションが追加されました#

MultiIndexのエントリと名前を保持する新しい'tight'辞書形式が、DataFrame.from_dict()およびDataFrame.to_dict()メソッドで利用可能になり、標準のjsonライブラリと組み合わせてDataFrameオブジェクトのタイトな表現を生成するために使用できます (GH 4889)。

In [14]: df = pd.DataFrame.from_records(
   ....:     [[1, 3], [2, 4]],
   ....:     index=pd.MultiIndex.from_tuples([("a", "b"), ("a", "c")],
   ....:                                     names=["n1", "n2"]),
   ....:     columns=pd.MultiIndex.from_tuples([("x", 1), ("y", 2)],
   ....:                                       names=["z1", "z2"]),
   ....: )
   ....: 

In [15]: df
Out[15]: 
z1     x  y
z2     1  2
n1 n2      
a  b   1  3
   c   2  4

In [16]: df.to_dict(orient='tight')
Out[16]: 
{'index': [('a', 'b'), ('a', 'c')],
 'columns': [('x', 1), ('y', 2)],
 'data': [[1, 3], [2, 4]],
 'index_names': ['n1', 'n2'],
 'column_names': ['z1', 'z2']}

その他の機能強化#

注目すべきバグ修正#

これらは、注目すべき動作変更をもたらす可能性のあるバグ修正です。

一貫性のない日付文字列解析#

to_datetime()dayfirstオプションは厳密ではなく、予期せぬ挙動につながることがありました。

In [17]: pd.to_datetime(["31-12-2021"], dayfirst=False)
Out[17]: DatetimeIndex(['2021-12-31'], dtype='datetime64[ns]', freq=None)

区切り記号付きの日付文字列(例:31-12-2012)が指定されたdayfirst値に従って解析できない場合、警告が発行されるようになりました。

空またはすべてNAの列があるconcatでのdtypeの無視を停止#

この挙動変更はpandas 1.4.3で元に戻されました。

concat()を使用して2つ以上のDataFrameオブジェクトを連結する場合、いずれかのDataFrameが空であるか、すべてのNA値を持っていた場合、連結されたdtypeを見つける際にそのdtypeが時々無視されていました。これらは一貫して無視されなくなりました (GH 43507)。

In [3]: df1 = pd.DataFrame({"bar": [pd.Timestamp("2013-01-01")]}, index=range(1))
In [4]: df2 = pd.DataFrame({"bar": np.nan}, index=range(1, 2))
In [5]: res = pd.concat([df1, df2])

以前は、df2のfloat-dtypeは無視され、結果のdtypeはdatetime64[ns]になりました。その結果、np.nanNaTにキャストされました。

以前の動作:

In [6]: res
Out[6]:
         bar
0 2013-01-01
1        NaT

現在、浮動小数点型は尊重されています。これらのDataFrameの共通のdtypeはオブジェクトであるため、np.nanは保持されます。

新しい動作:

In [6]: res
Out[6]:
                   bar
0  2013-01-01 00:00:00
1                  NaN

value_countsとmodeでNull値がNaN値に強制されなくなりました#

Series.value_counts()Series.mode()は、np.object_-dtypeの場合、NoneNaT、およびその他のnull値をNaN値に強制しなくなりました。この動作は、uniqueisinなどと一貫しています (GH 42688)。

In [18]: s = pd.Series([True, None, pd.NaT, None, pd.NaT, None])

In [19]: res = s.value_counts(dropna=False)

以前は、すべてのnull値がNaN値に置き換えられていました。

以前の動作:

In [3]: res
Out[3]:
NaN     5
True    1
dtype: int64

現在、null値は変更されません。

新しい動作:

In [20]: res
Out[20]: 
None    3
NaT     2
True    1
Name: count, dtype: int64

read_csvのmangle_dupe_colsは、ターゲット名と競合する一意の列名を変更しなくなりました#

read_csv()は、重複する列のターゲット名と競合する一意の列ラベルの名前を変更しなくなりました。既に存在する列はスキップされ、次の利用可能なインデックスがターゲット列名に使用されます (GH 14704)。

In [21]: import io

In [22]: data = "a,a,a.1\n1,2,3"

In [23]: res = pd.read_csv(io.StringIO(data))

以前は、2番目の列はa.1と呼ばれ、3番目の列もa.1.1に名前が変更されました。

以前の動作:

In [3]: res
Out[3]:
    a  a.1  a.1.1
0   1    2      3

現在、名前変更は、2番目の列の名前を変更するときにa.1が既に存在するかどうかを確認し、このインデックスをスキップします。2番目の列は代わりにa.2に名前が変更されます。

新しい動作:

In [24]: res
Out[24]: 
   a  a.2  a.1
0  1    2    3

unstackとpivot_tableがint32制限を超える結果に対してValueErrorを発生させなくなりました#

以前は、DataFrame.pivot_table()DataFrame.unstack()は、操作によって2**31 - 1を超える要素を持つ結果が生成される可能性がある場合にValueErrorを発生させていました。この操作は、代わりにerrors.PerformanceWarningを発生させるようになりました (GH 26314)。

以前の動作:

In [3]: df = DataFrame({"ind1": np.arange(2 ** 16), "ind2": np.arange(2 ** 16), "count": 0})
In [4]: df.pivot_table(index="ind1", columns="ind2", values="count", aggfunc="count")
ValueError: Unstacked DataFrame is too big, causing int32 overflow

新しい動作:

In [4]: df.pivot_table(index="ind1", columns="ind2", values="count", aggfunc="count")
PerformanceWarning: The following operation may generate 4294967296 cells in the resulting pandas object.

groupby.applyの一貫した変換検出#

DataFrameGroupBy.apply()SeriesGroupBy.apply()は柔軟に設計されており、ユーザーは集計、変換、フィルタリング、およびこれらのカテゴリに分類されない可能性のあるユーザー定義関数での使用が可能です。その一環として、applyは操作が変換であると検出を試み、その場合、結果は入力と同じインデックスを持つことになります。操作が変換であるかを判断するために、pandasは入力のインデックスと結果のインデックスを比較し、それが変更されたかどうかを判断します。以前のpandas 1.3では、異なるコードパスが「変更された」の異なる定義を使用していました。一部はPythonのisを使用し、他は等価性のみをテストしていました。

この不一致は解消され、pandasは現在等価性までテストしています。

In [25]: def func(x):
   ....:     return x.copy()
   ....: 

In [26]: df = pd.DataFrame({'a': [1, 2], 'b': [3, 4], 'c': [5, 6]})

In [27]: df
Out[27]: 
   a  b  c
0  1  3  5
1  2  4  6

以前の動作:

In [3]: df.groupby(['a']).apply(func)
Out[3]:
     a  b  c
a
1 0  1  3  5
2 1  2  4  6

In [4]: df.set_index(['a', 'b']).groupby(['a']).apply(func)
Out[4]:
     c
a b
1 3  5
2 4  6

上記の例では、最初のケースではpandasがisを使用するコードパスであり、funcが変換ではないと判断されますが、2番目のケースでは等価性までテストされ、funcが変換であると判断されます。最初のケースでは、結果のインデックスは入力と同じではありません。

新しい動作:

In [5]: df.groupby(['a']).apply(func)
Out[5]:
   a  b  c
0  1  3  5
1  2  4  6

In [6]: df.set_index(['a', 'b']).groupby(['a']).apply(func)
Out[6]:
     c
a b
1 3  5
2 4  6

現在、両方のケースでfuncが変換であると判断されます。どちらのケースでも、結果は入力と同じインデックスを持ちます。

下位互換性のない API の変更#

Python の最小バージョンが引き上げられました#

pandas 1.4.0はPython 3.8以降をサポートしています。

依存関係の最小バージョン引き上げ#

一部の依存関係の最小サポートバージョンが更新されました。インストールされている場合、以下のバージョンが必要になります。

パッケージ

最小バージョン

必須

変更済み

numpy

1.18.5

X

X

pytz

2020.1

X

X

python-dateutil

2.8.1

X

X

bottleneck

1.3.1

X

numexpr

2.7.1

X

pytest (開発)

6.0

mypy (開発)

0.930

X

オプションのライブラリについては、一般的に最新バージョンを使用することが推奨されます。以下の表は、pandas の開発全体で現在テストされているライブラリごとの最低バージョンを示しています。最低テストバージョンより古いオプションのライブラリは動作する可能性がありますが、サポートされているとはみなされません。

パッケージ

最小バージョン

変更済み

beautifulsoup4

4.8.2

X

fastparquet

0.4.0

fsspec

0.7.4

gcsfs

0.6.0

lxml

4.5.0

X

matplotlib

3.3.2

X

numba

0.50.1

X

openpyxl

3.0.3

X

pandas-gbq

0.14.0

X

pyarrow

1.0.1

X

pymysql

0.10.1

X

pytables

3.6.1

X

s3fs

0.4.0

scipy

1.4.1

X

sqlalchemy

1.4.0

X

表計算

0.8.7

xarray

0.15.1

X

xlrd

2.0.1

X

xlsxwriter

1.2.2

X

xlwt

1.3.0

詳細については、依存関係 および オプションの依存関係 を参照してください。

その他の API の変更#

  • Index.get_indexer_for()は、キーワード引数(target以外)を受け入れなくなりました。以前は、インデックスが一意でない場合、これらは黙って無視されていました (GH 42310)

  • DataFrame.to_string()min_rows引数の位置が、docstringの変更により変更されました (GH 44304)

  • DataFrameまたはSeriesに対する削減操作において、skipnaNoneが渡された場合にValueErrorが発生するようになりました (GH 44178)

  • read_csv()read_html()は、ヘッダー行の1つがUnnamed:列のみで構成されている場合にエラーを発生させなくなりました (GH 13054)

  • USFederalHolidayCalendarに含まれるいくつかの祝日のname属性が、公式の連邦祝日名と一致するように変更されました。

    • 「New Year’s Day」に所有格のアポストロフィが追加されました。

    • 「大統領の日」(Presidents Day)が「ワシントン誕生日」(Washington’s Birthday)になりました。

    • 「マーティン・ルーサー・キング・ジュニア・デー」が「マーティン・ルーサー・キング・ジュニアの誕生日」になりました。

    • 「7月4日」が「独立記念日」になりました。

    • 「感謝祭」が「感謝祭の日」になりました。

    • 「クリスマス」が「クリスマスデー」になりました。

    • 「ジューンティーンス国立独立記念日」が追加されました。

非推奨#

Int64Index, UInt64Index & Float64Indexが非推奨になりました#

Int64IndexUInt64Index、およびFloat64Indexは、基本のIndexクラスを推奨して非推奨となり、Pandas 2.0で削除されます (GH 43028)。

数値インデックスを作成するには、データ型を指定して基本のIndexクラスを使用できます(これは古いpandasリリースでも機能します)。

# replace
pd.Int64Index([1, 2, 3])
# with
pd.Index([1, 2, 3], dtype="int64")

インデックスオブジェクトのデータ型を確認するには、isinstanceチェックをdtypeのチェックに置き換えることができます。

# replace
isinstance(idx, pd.Int64Index)
# with
idx.dtype == "int64"

現在、後方互換性を維持するため、Indexへの呼び出しは、数値データが与えられた場合にInt64IndexUInt64Index、およびFloat64Indexを返し続けますが、将来はIndexが返されるようになります。

現在の動作:

In [1]: pd.Index([1, 2, 3], dtype="int32")
Out [1]: Int64Index([1, 2, 3], dtype='int64')
In [1]: pd.Index([1, 2, 3], dtype="uint64")
Out [1]: UInt64Index([1, 2, 3], dtype='uint64')

将来の動作:

In [3]: pd.Index([1, 2, 3], dtype="int32")
Out [3]: Index([1, 2, 3], dtype='int32')
In [4]: pd.Index([1, 2, 3], dtype="uint64")
Out [4]: Index([1, 2, 3], dtype='uint64')

DataFrame.appendとSeries.appendが非推奨になりました#

DataFrame.append()およびSeries.append()は非推奨となり、将来のバージョンで削除されます。代わりにpandas.concat()を使用してください (GH 35407)。

非推奨の構文

In [1]: pd.Series([1, 2]).append(pd.Series([3, 4])
Out [1]:
<stdin>:1: FutureWarning: The series.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
0    1
1    2
0    3
1    4
dtype: int64

In [2]: df1 = pd.DataFrame([[1, 2], [3, 4]], columns=list('AB'))
In [3]: df2 = pd.DataFrame([[5, 6], [7, 8]], columns=list('AB'))
In [4]: df1.append(df2)
Out [4]:
<stdin>:1: FutureWarning: The series.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
   A  B
0  1  2
1  3  4
0  5  6
1  7  8

推奨構文

In [28]: pd.concat([pd.Series([1, 2]), pd.Series([3, 4])])
Out[28]: 
0    1
1    2
0    3
1    4
dtype: int64

In [29]: df1 = pd.DataFrame([[1, 2], [3, 4]], columns=list('AB'))

In [30]: df2 = pd.DataFrame([[5, 6], [7, 8]], columns=list('AB'))

In [31]: pd.concat([df1, df2])
Out[31]: 
   A  B
0  1  2
1  3  4
0  5  6
1  7  8

その他の非推奨化#

  • Index.is_type_compatible()が非推奨になりました (GH 42113)

  • Index.get_loc()method引数が非推奨になりました。代わりにindex.get_indexer([label], method=...)を使用してください (GH 42269)

  • Series.__setitem__()で、インデックスがキーを含まないFloat64Index、キーを含むエントリがないIntervalIndex、またはキーを含まない先頭のFloat64Indexレベルを持つMultiIndexである場合に、整数キーを位置として扱うことが非推奨になりました (GH 33469)

  • Timestampコンストラクタにタイムゾーンとともに渡されたnumpy.datetime64オブジェクトをUTC時刻として扱うことが非推奨になりました。将来のバージョンでは、これらは壁時計時刻として扱われます。以前の動作を保持するには、Timestamp(dt64).tz_localize("UTC").tz_convert(tz)を使用してください (GH 24559)

  • MultiIndexのレベルでラベルのシーケンスを使用してインデックス付けする際に、不足しているラベルを無視することが非推奨になりました (GH 42351)

  • dtypeを指定せずに空のSeriesを作成すると、DeprecationWarningではなく、より目立つFutureWarningが発行されるようになりました (GH 30017)

  • Index.get_slice_bound()Index.slice_indexer()、およびIndex.slice_locs()kind引数が非推奨になりました。将来のバージョンでは、kindを渡すと例外が発生します (GH 42857)

  • RollingExpanding、およびEWMの集計における不便な列の削除が非推奨になりました (GH 42738)

  • 一意でないIndexIndex.reindex()を使用することが非推奨になりました (GH 42568)

  • Styler.render()が非推奨となり、代わりにStyler.to_html()が推奨されます (GH 42140)

  • Styler.hide_index()Styler.hide_columns()が非推奨となり、代わりにStyler.hide()が推奨されます (GH 43758)

  • DataFrame.ewm()timesに文字列の列ラベルを渡すことが非推奨になりました (GH 43265)

  • DataFrame.between_time()include_startおよびinclude_end引数が非推奨になりました。将来のバージョンでは、include_startまたはinclude_endを渡すと例外が発生します (GH 40245)

  • read_csv()read_table()、およびread_excel()squeeze引数が非推奨になりました。ユーザーは代わりに.squeeze("columns")DataFrameを絞り込むべきです (GH 43242)

  • SparseArrayコンストラクタのindex引数が非推奨になりました (GH 23089)

  • date_range()bdate_range() における closed 引数が非推奨となり、代わりに inclusive 引数を使用してください。将来のバージョンでは、closed を渡すとエラーが発生します (GH 40245)

  • Rolling.validate(), Expanding.validate(), および ExponentialMovingWindow.validate() は非推奨です (GH 43665)

  • 辞書とともに使用された場合、Series.transform および DataFrame.transformTypeError を発生させた列がサイレントにドロップされる動作は非推奨です (GH 43740)

  • リストとともに使用された場合、Series.aggregate(), DataFrame.aggregate(), Series.groupby.aggregate(), および DataFrame.groupby.aggregate()TypeError, DataError, および一部の ValueError を発生させた列がサイレントにドロップされる動作は非推奨です (GH 43740)

  • タイムゾーンが一致しない場合に、タイムゾーンを考慮した値がタイムゾーンを考慮した Series または DataFrame 列に設定される際のキャスト動作は非推奨です。以前は、これはオブジェクトdtypeにキャストされていました。将来のバージョンでは、挿入される値はシリーズまたは列の既存のタイムゾーンに変換されます (GH 37605)

  • タイムゾーンが一致しない項目を DatetimeIndex.insert(), DatetimeIndex.putmask(), DatetimeIndex.where() DatetimeIndex.fillna(), Series.mask(), Series.where(), Series.fillna(), Series.shift(), Series.replace(), Series.reindex() (および DataFrame 列の類似のもの) に渡す際のキャスト動作は非推奨です。以前は、これはオブジェクト dtype にキャストされていました。将来のバージョンでは、これらの項目はインデックスまたはシリーズのタイムゾーンにキャストされます (GH 37605, GH 44940)

  • read_csv() および read_table() における prefix キーワード引数は非推奨です。将来のバージョンでは、この引数は削除されます (GH 43396)

  • concat()sort に非ブール引数を渡すことは非推奨です (GH 41518)

  • read_fwf()filepath_or_buffer 以外の引数を位置引数として渡すことは非推奨です (GH 41485)

  • read_xml()path_or_buffer 以外の引数を位置引数として渡すことは非推奨です (GH 45133)

  • DataFrame.mad() および Series.mad()skipna=None を渡すことは非推奨です。代わりに skipna=True を渡してください (GH 44580)

  • utc=False を指定して文字列 "now" を to_datetime() に渡す動作は非推奨です。将来のバージョンでは、これは Timestamp("now") と一致し、それは Timestamp.now() がローカル時間を返すのと一致します (GH 18705)

  • DateOffset.apply() は非推奨です。代わりに offset + other を使用してください (GH 44522)

  • Index.copy() のパラメータ names は非推奨です (GH 44916)

  • DataFrame.to_latex() に対して、引数のシグネチャが変更され、将来のバージョンで Styler.to_latex() の引数により近づく可能性があることを示す非推奨警告が表示されるようになりました (GH 44411)

  • bool-dtype と数値-dtype のオブジェクト間の concat() の動作は非推奨です。将来のバージョンでは、これらはブール値を数値に強制変換するのではなく、オブジェクト dtype にキャストされます (GH 39817)

  • Categorical.replace() は非推奨です。代わりに Series.replace() を使用してください (GH 44929)

  • DataFrame.loc.__setitem__(), DataFrame.loc.__getitem__(), Series.loc.__setitem__(), Series.loc.__getitem__(), DataFrame.__getitem__(), Series.__getitem__() および Series.__setitem__() のインデクサーとして set または dict を渡すことは非推奨です (GH 42825)

  • boolキーを使用した Index.__getitem__() は非推奨です。以前の動作を得るには index.values[key] を使用してください (GH 44051)

  • 整数 dtype を持つ DataFrame.where() で列ごとにダウンキャストする動作は非推奨です (GH 44597)

  • DatetimeIndex.union_many() は非推奨です。代わりに DatetimeIndex.union() を使用してください (GH 44091)

  • Groupby.pad() は非推奨です。代わりに Groupby.ffill() を使用してください (GH 33396)

  • Groupby.backfill() は非推奨です。代わりに Groupby.bfill() を使用してください (GH 33396)

  • Resample.pad() は非推奨です。代わりに Resample.ffill() を使用してください (GH 33396)

  • Resample.backfill() は非推奨です。代わりに Resample.bfill() を使用してください (GH 33396)

  • DataFrame.rank() における numeric_only=None は非推奨です。将来のバージョンでは、numeric_onlyTrue または False (デフォルト) のいずれかである必要があります (GH 45036)

  • Timestamp.utcfromtimestamp() の動作は非推奨です。将来はタイムゾーンを考慮したUTC Timestamp を返します (GH 22451)

  • NaT.freq() は非推奨です (GH 45071)

  • NaN を含むfloat-dtypeデータと、dtype引数を無視する整数dtypeを渡した場合の Series および DataFrame の構築動作は非推奨です。将来のバージョンでは、これはエラーを発生させます (GH 40110)

  • name=None の場合に name 引数を無視する Series.to_frame() および Index.to_frame() の動作は非推奨です。現在、これは既存の名前を保持することを意味しますが、将来的に明示的に name=None を渡すと、結果のDataFrameの列の名前が None に設定されます (GH 44212)

パフォーマンス改善#

バグ修正#

カテゴリカル#

  • Categorical (または Categorical でバックアップされた Series または DataFrame) に dtype 非互換の値を設定すると TypeError ではなく ValueError が発生するバグを修正しました (GH 41919)

  • dtype 非互換の値を渡すと TypeError ではなく KeyError が発生する Categorical.searchsorted() のバグを修正しました (GH 41919)

  • datetime と Timestamp を dtype object に対して int にキャストする Categorical.astype() のバグを修正しました (GH 44930)

  • dtype 非互換の値を渡すと TypeError ではなく ValueError が発生する、CategoricalDtype を持つ Series.where() のバグを修正しました (GH 41919)

  • dtype 非互換の値を渡すと TypeError ではなく ValueError が発生する Categorical.fillna() のバグを修正しました (GH 41919)

  • 非カテゴリのタプルで埋めると TypeError ではなく ValueError が発生する、タプルライクなカテゴリを持つ Categorical.fillna() のバグを修正しました (GH 41919)

日付時刻ライク#

  • DataFrame コンストラクタが非datetimeライクな2Dオブジェクト配列を不必要にコピーするバグを修正しました (GH 39272)

  • formatpandas.NA を持つ to_datetime()ValueError を発生させていたバグを修正しました (GH 42957)

  • to_datetime() は、指定された dayfirst オプションが尊重できない場合に MM/DD/YYYYDD/MM/YYYY フォーマットをサイレントに交換していましたが、区切り記号付きの日付文字列 (例: 31-12-2012) の場合に警告が発生するようになりました (GH 12585)

  • start = end で、セットが片側で閉じている場合に、date_range()bdate_range() が右境界を返さないバグを修正しました (GH 43394)

  • DatetimeIndex または TimedeltaIndexDatetimeArray または TimedeltaArray のインプレース加算および減算のバグを修正しました (GH 43904)

  • タイムゾーンを考慮した DatetimeIndexnp.isnan, np.isfinite, または np.isinf を呼び出すと、誤って TypeError が発生するバグを修正しました (GH 43917)

  • タイムゾーンが混在する datetime ライクな文字列から Series を構築する際に、datetime 値が誤って部分的に推論されるバグを修正しました (GH 40111)

  • Tick オブジェクトと np.timedelta64 オブジェクトの加算が、Timedelta を返す代わりに誤ってエラーを発生させるバグを修正しました (GH 44474)

  • np.maximum.reduce および np.minimum.reduce が、datetime64[ns] または timedelta64[ns] dtype を持つ Series, DataFrame, または Index に対して操作する際に、正しく Timestamp および Timedelta オブジェクトを返すようになりました (GH 43923)

  • np.timedelta64 オブジェクトを BusinessDay または CustomBusinessDay オブジェクトに加算すると誤ってエラーが発生するバグを修正しました (GH 44532)

  • dtype='object'Indexnp.datetime64, np.timedelta64, または tuple を負の loc で挿入すると None が追加され、既存の値が置き換えられる Index.insert() のバグを修正しました (GH 44509)

  • Timestamp.to_pydatetime()fold 属性を保持できないバグを修正しました (GH 45087)

  • DatetimeTZDtype を持つ Series.mode() が誤ってタイムゾーン非対応の値を返し、PeriodDtype が誤ってエラーを発生させるバグを修正しました (GH 41927)

  • reindex() が datetime ライクな dtype と互換性のない埋め込み値を使用した場合にエラーを発生させる (または datetime.date を埋め込み値として使用した場合に非推奨警告を発生させない) というリグレッションを修正しました (GH 42921)

  • DateOffsetTimestamp の加算で、offset.nanoseconds が結果に含まれないバグを修正しました (GH 43968, GH 36589)

  • Timestamp.fromtimestamp()tz 引数をサポートしないバグを修正しました (GH 45083)

  • インデックス dtype が一致しない Series の辞書から DataFrame を構築する際に、渡された辞書の順序によってはエラーが発生するバグを修正しました (GH 44091)

  • 一部のDST遷移中の Timestamp ハッシュ化におけるバグがセグメンテーション違反を引き起こしていたバグを修正しました (GH 33931 および GH 40817)

Timedelta#

  • すべて NaTTimeDeltaIndex, Series または DataFrame 列を、数値のオブジェクト dtype 配列ライクなもので除算すると、結果が timedelta64-dtype として推論されないバグを修正しました (GH 39750)

  • スカラによる timedelta64[ns] データの切り捨て除算が、誤った値を返すバグを修正しました (GH 44466)

  • Timedelta が、任意のkwargのナノ秒の寄与を適切に考慮するようになったバグを修正しました (GH 43764, GH 45227)

タイムゾーン#

  • infer_datetime_format=True を指定した to_datetime() がゼロUTCオフセット (Z) を正しく解析できないバグを修正しました (GH 41047)

  • CategoricalIndex を持つ SeriesSeries.dt.tz_convert() がインデックスをリセットするバグを修正しました (GH 43080)

  • タイムゾーンが一致しない2つのタイムゾーンを考慮したオブジェクトを減算すると、Timestamp および DatetimeIndex が誤って TypeError を発生させるバグを修正しました (GH 31793)

数値#

  • 整数のリストまたはタプルを Series で切り捨て除算すると誤ってエラーが発生するバグを修正しました (GH 44674)

  • object 列と method="first" を指定した場合に DataFrame.rank()ValueError を発生させるバグを修正しました (GH 41931)

  • DataFrame.rank() が、欠損値と極値 (例: np.nannp.inf) を等しいものとして扱い、na_option="bottom" または na_option="top を使用した場合に誤った結果を引き起こすバグを修正しました (GH 41931)

  • オプション compute.use_numexprFalse に設定されている場合でも numexpr エンジンが使用され続けるバグを修正しました (GH 32556)

  • _constructor() 属性がサブクラス自体以外の呼び出し可能オブジェクトであるサブクラスとの DataFrame 算術演算のバグを修正しました (GH 43201)

  • RangeIndex を含む算術演算で、結果の name が誤っていたバグを修正しました (GH 43962)

  • オペランドが一致するNAまたは一致するタプル名を持つ場合に、Series を含む算術演算で、結果が誤った name を持つ可能性があったバグを修正しました (GH 44459)

  • IntegerDtype または BooleanDtype 配列とNAスカラの除算が誤ってエラーを発生させるバグを修正しました (GH 44685)

  • FloatingDtype を持つ Series を timedelta ライクなスカラで乗算すると誤ってエラーが発生するバグを修正しました (GH 44772)

変換#

  • int64にキャストするには十分小さい正の整数と、int64に保持するには大きすぎる整数の両方を含むリストを渡した場合の UInt64Index コンストラクタのバグを修正しました (GH 42201)

  • int64 dtype の欠損値に0を返し、bool dtype に False を返す Series コンストラクタのバグを修正しました (GH 43017, GH 43018)

  • Series オブジェクトを含む PandasArray から DataFrame を構築する際に、同等の np.ndarray とは異なる動作をするバグを修正しました (GH 43986)

  • IntegerDtype が文字列dtypeからの強制変換を許可しないバグを修正しました (GH 25472)

  • arg:xr.DataArrayunit="ns" が指定された to_datetime()TypeError を発生させるバグを修正しました (GH 44053)

  • サブクラスが _constructor_sliced() をオーバーロードしない場合に DataFrame.convert_dtypes() が正しい型を返さないバグを修正しました (GH 43201)

  • DataFrame.astype() が元の DataFrame から attrs を伝播しないバグを修正しました (GH 44414)

  • DataFrame.convert_dtypes() の結果が columns.names を失うバグを修正しました (GH 41435)

  • pyarrowデータから IntegerArray を構築する際に、dtypes の検証に失敗するバグを修正しました (GH 44891)

  • Series.astype()PeriodDtype から datetime64 dtype への変換を許可せず、PeriodIndex の動作と矛盾するバグを修正しました (GH 45038)

文字列#

  • pyarrow がインストールされていない場合に、string[pyarrow] dtype のチェックが誤って ImportError を発生させるバグを修正しました (GH 44276)

Interval#

  • where 呼び出しが何も置き換えるべきでない場合に、IntervalDtype を持つ Series.where() が誤ってエラーを発生させるバグを修正しました (GH 44181)

インデックス付け#

  • MultiIndexlevel が提供されている場合の Series.rename() のバグを修正しました (GH 43659)

  • オブジェクトの Index の長さが1より大きいが、一意の値が1つしかない場合の DataFrame.truncate() および Series.truncate() のバグを修正しました (GH 42365)

  • MultiIndex を持つ Series.loc() および DataFrame.loc() で、レベルの1つもタプルであるタプルでインデックスを作成する際のバグを修正しました (GH 27591)

  • 最初のレベルに np.nan 値のみが含まれる MultiIndex を持つ Series.loc() のバグを修正しました (GH 42055)

  • 文字列を渡した場合の DatetimeIndex を持つ Series または DataFrame のインデックス作成で、戻り値の型がインデックスが単調であるかどうかに依存していたバグを修正しました (GH 24892)

  • MultiIndex のインデックス作成におけるバグ。インデクサーが日時のような文字列を含むタプルである場合、スカラーレベルのドロップに失敗しました (GH 42476)

  • DataFrame.sort_values() および Series.sort_values() で、昇順値を渡したときに ValueError が発生しなかった、または誤って発生したバグ (GH 41634)

  • pandas.DataFrame.pop() を使用して作成されたブールインデックスを使用して pandas.Series の値を更新する際のバグ (GH 42530)

  • Index.get_indexer_non_unique() で、インデックスに複数の np.nan が含まれている場合のバグ (GH 35392)

  • DataFrame.query() で、バッククォートされた列名 (例: `Temp(°C)`) 内の度記号が DataFrame をクエリするための式で使用されたときに処理されなかったバグ (GH 42826)

  • DataFrame.drop() で、KeyError が発生したときにエラーメッセージに欠落しているラベルがコンマで表示されなかったバグ (GH 42881)

  • DataFrame.query() で、numexpr パッケージがインストールされている場合にクエリ文字列内のメソッド呼び出しがエラーを引き起こしたバグ (GH 22435)

  • DataFrame.nlargest() および Series.nlargest() で、ソートされた結果が np.nan を含むインデックスをカウントしなかったバグ (GH 28984)

  • 非一意なオブジェクト型 Index で NA スカラー (例: np.nan) を使用するインデックス作成のバグ (GH 43711)

  • DataFrame.__setitem__() で、新しいデータ型と古いデータ型が一致する場合に、新しい配列を設定する代わりに既存の列の配列に誤って書き込んだバグ (GH 43406)

  • 整数型 Series に浮動小数点型値を設定する際に、その値がロスレスで整数に変換できる場合にインプレース設定に失敗したバグ (GH 44316)

  • オブジェクト型 Series.__setitem__() で、一致するサイズと dtype='datetime64[ns]' または dtype='timedelta64[ns]' の配列を設定すると、日時/期間が誤って整数に変換されたバグ (GH 43868)

  • DataFrame.sort_index() で、インデックスがすでにソートされている場合に ignore_index=True が尊重されなかったバグ (GH 43591)

  • Index.get_indexer_non_unique() で、インデックスに複数の np.datetime64("NaT") および np.timedelta64("NaT") が含まれている場合のバグ (GH 43869)

  • IntervalDtype を持つ Series にスカラー Interval 値を設定する際に、スカラーのサイドが浮動小数点数で、値のサイドが整数の場合のバグ (GH 44201)

  • 文字列でサポートされた Categorical 値 (datetime にパース可能) を DatetimeArray または Series または DataFrameDatetimeArray でサポートされた列に設定する際に、これらの文字列のパースに失敗するバグ (GH 44236)

  • int64 以外の整数型 Series.__setitem__() で、range オブジェクトで設定する際に不必要に int64 にアップキャストされたバグ (GH 44261)

  • ブールマスクインデクサーを持つ Series.__setitem__() で、長さ 1 のリストのような値を設定すると、その値が誤ってブロードキャストされたバグ (GH 44265)

  • Series.reset_index() で、dropinplaceTrue に設定されている場合に name 引数が無視されなかったバグ (GH 44575)

  • DataFrame.loc.__setitem__() および DataFrame.iloc.__setitem__() で、混在するデータ型を持つ場合にインプレース操作に失敗することがあったバグ (GH 44345)

  • DataFrame.loc.__getitem__() で、ブールキーで単一の列を選択すると KeyError が誤って発生したバグ (GH 44322)。

  • DataFrame.iloc() で、単一の ExtensionDtype 列と 2D 値 (例: df.iloc[:] = df.values) を設定すると誤ってエラーが発生したバグ (GH 44514)

  • DataFrame.iloc() で、単一の ExtensionDtype 列と配列のタプルをインデクサーとして使用して値を設定する際のバグ (GH 44703)

  • loc または iloc を使用して、負のステップのスライスを持つ列のインデックス作成で、ExtensionDtype 列が誤ってエラーを発生させたバグ (GH 44551)

  • DataFrame.loc.__setitem__() で、インデクサーが完全に False の場合にデータ型が変更されたバグ (GH 37550)

  • IntervalIndex.get_indexer_non_unique() が、非一意で非単調なインデックスに対して整数配列ではなくブールマスクを返したバグ (GH 44084)

  • IntervalIndex.get_indexer_non_unique() が、NaN を含む dtype 'object' のターゲットを正しく処理しなかったバグ (GH 44482)

  • 単一列の np.matrixDataFrame に追加されたときに 1 次元の np.ndarray に強制変換されなくなった回帰が修正されました (GH 42376)

  • Series.__getitem__() で、整数リストを位置インデクサーとして扱い、単一のスカラー整数の場合の動作と矛盾する CategoricalIndex (整数) のバグ (GH 15470, GH 14865)

  • Series.__setitem__() で、整数型 Series に浮動小数点数または整数を設定する際に、精度を維持するために必要な場合にアップキャストに失敗したバグ (GH 45121)

  • DataFrame.iloc.__setitem__() が軸引数を無視したバグ (GH 45032)

欠損値#

  • DataFrame.fillna() で、limit が設定され method がない場合に axis='columns' または axis = 1 が無視されたバグ (GH 40989, GH 17399)

  • DataFrame.fillna() で、辞書のような value と重複する列名を使用した場合に欠損値が置換されなかったバグ (GH 43476)

  • 値が辞書の np.datetime64dtype='timedelta64[ns]' (またはその逆) の DataFrame を構築する際に、エラーを発生させる代わりに誤ってキャストされたバグ (GH 44428)

  • Series.interpolate() および DataFrame.interpolate() で、inplace=True が設定されている場合に基となる配列にインプレースで書き込まなかったバグ (GH 44749)

  • Index.fillna() で、NA 値が存在し downcast 引数が指定されている場合に、埋められていない Index を誤って返したバグ。現在では代わりに NotImplementedError が発生します。downcast 引数を渡さないでください (GH 44873)

  • DataFrame.dropna() で、エントリがドロップされなかった場合でも Index が変更されたバグ (GH 41965)

  • オブジェクト型 Series.fillna() で、downcast="infer" を誤って無視したバグ (GH 44241)

MultiIndex#

  • MultiIndex.get_loc() で、最初のレベルが DatetimeIndex で文字列キーが渡された場合のバグ (GH 42465)

  • MultiIndex.reindex() で、ExtensionDtype レベルに対応する level を渡した場合のバグ (GH 42043)

  • MultiIndex.get_loc() で、ネストされたタプルに対して KeyError ではなく TypeError が発生したバグ (GH 42440)

  • MultiIndex.union() で、誤った sortorder が設定され、その後のスライスによるインデックス操作でエラーが発生したバグ (GH 44752)

  • MultiIndex.putmask() で、他の値も MultiIndex であった場合のバグ (GH 43212)

  • MultiIndex.dtypes() で、重複するレベル名が名前ごとに 1 つのデータ型しか返さなかったバグ (GH 45174)

I/O#

  • read_excel() で、.xlsx ファイルからグラフシートを読み取ろうとしたバグ (GH 41448)

  • json_normalize() で、record_path の長さが 1 より大きい場合に errors=ignoremeta の欠損値を無視できなかったバグ (GH 41876)

  • read_csv() で、マルチヘッダー入力と列名をタプルとして参照する引数を使用した場合のバグ (GH 42446)

  • read_fwf() で、colspecsnames の長さの差が ValueError を発生させなかったバグ (GH 40830)

  • Series.to_json() および DataFrame.to_json() で、プレーンな Python オブジェクトを JSON にシリアル化する際に一部の属性がスキップされたバグ (GH 42768, GH 33043)

  • sqlalchemy の Row オブジェクトから DataFrame を構築する際に列ヘッダーがドロップされた (GH 40682)

  • オブジェクト型 Index のアンピクル時に数値データ型が誤って推論されたバグ (GH 43188)

  • read_csv() で、異なる長さのマルチヘッダー入力を読み取ると誤って IndexError が発生したバグ (GH 43102)

  • read_csv() で、engine="c" の場合にファイルをチャンクで読み取り、一部のチャンクブロックの列数がヘッダーより少ないと ParserError が発生したバグ (GH 21211)

  • read_csv() で、ファイルパス名またはファイルのようなオブジェクトを期待する場合の例外クラスが OSError から TypeError に変更されたバグ (GH 43366)

  • read_csv() および read_fwf() で、engine='python' の場合に nrows が指定されていると最初の skiprows 以外のすべてが無視されたバグ (GH 44021, GH 10261)

  • read_csv() で、keep_date_col=True が設定されている場合に元の列がオブジェクト形式で保持されたバグ (GH 13378)

  • read_json() で、非 NumPy データ型 (特に category) が正しく処理されなかったバグ (GH 21892, GH 33205)

  • json_normalize() で、複数文字の sep パラメーターがすべてのキーに誤ってプレフィックスとして追加されたバグ (GH 43831)

  • json_normalize() で、欠損マルチレベルメタデータを含むデータを読み取る際に errors="ignore" が尊重されなかったバグ (GH 44312)

  • read_csv() で、engine="python" の場合に headerNone に設定されていると、2 行目を使用して暗黙のインデックスを推測したバグ (GH 22144)

  • read_csv() で、engine="c" の場合に names が指定されても不正な行が認識されなかったバグ (GH 22144)

  • read_csv() で、float_precision="round_trip" が初期/末尾の空白をスキップしなかったバグ (GH 43713)

  • Python が lzma モジュールなしでビルドされている場合、lzma 機能が使用されていない場合でも pandas のインポート時に警告が発生したバグ (GH 43495)

  • read_csv() で、index_col にデータ型が適用されなかったバグ (GH 9435)

  • yaml.dump(frame)DataFrame をダンプ/ロードする際のバグ (GH 42748)

  • read_csv() で、engine="python" の場合に namesheader より長くデータ行と同じ場合に ValueError が発生したバグ (GH 38453)

  • ExcelWriter で、engine_kwargs がすべてのエンジンに渡されなかったバグ (GH 43442)

  • read_csv() で、parse_datesMultiIndex 列とともに使用された場合に ValueError が発生したバグ (GH 8991)

  • read_csv() で、\ndelimiter または sep として指定され、lineterminator と競合した場合に ValueError が発生しなかったバグ (GH 43528)

  • to_csv() で、カテゴリカル Series の日時が整数に変換されたバグ (GH 40754)

  • read_csv() で、日付解析が失敗した後に列が数値に変換されたバグ (GH 11019)

  • read_csv() で、日付変換を試みる前に NaN 値が np.nan に置換されなかったバグ (GH 26203)

  • read_csv() で、.csv ファイルを読み取り、ヌル可能な整数型からインデックス列のデータ型を推測しようとすると AttributeError が発生したバグ (GH 44079)

  • to_csv() で、異なる形式の日時列が常に同じ形式に強制変換されたバグ (GH 21734)

  • DataFrame.to_csv() および Series.to_csv() で、compression'zip' に設定されている場合に、ファイル名の末尾が ".zip" のファイルを含む zip ファイルが作成されなくなりました。代わりに、内部ファイル名がよりスマートに推測されるようになりました (GH 39465)

  • read_csv() で、ブール値と欠損値が混在する列を浮動小数点型に読み取ると、欠損値が NaN ではなく 1.0 になったバグ (GH 42808, GH 34120)

  • to_xml() で、拡張配列データ型を持つ pd.NA に対してエラーが発生したバグ (GH 43903)

  • read_csv() で、date_parser でパーサーを渡し、同時に parse_dates=False を設定した場合でも解析が呼び出されたバグ (GH 44366)

  • read_csv() で、index_col が最初の列ではない場合に MultiIndex 列の名前が正しく設定されなかったバグ (GH 38549)

  • read_csv() で、メモリマップトファイルの作成に失敗した場合にエラーがサイレントに無視されたバグ (GH 44766)

  • read_csv() で、バイナリモードで開かれた tempfile.SpooledTemporaryFile を渡した場合のバグ (GH 44748)

  • read_json() で、"://" を含む json 文字列を解析しようとすると ValueError が発生したバグ (GH 36271)

  • read_csv() で、engine="c"encoding_errors=None の場合にセグメンテーション違反が発生したバグ (GH 45180)

  • read_csv() で、usecols の無効な値がファイルハンドルの未閉鎖につながったバグ (GH 45384)

  • DataFrame.to_json() でメモリリークを修正 (GH 43877)

期間#

  • Period オブジェクトを np.timedelta64 オブジェクトに追加する際に、誤って TypeError が発生したバグ (GH 44182)

  • PeriodIndex.to_timestamp() で、インデックスに freq="B" が設定されている場合に、結果の freqfreq="B" ではなく freq="D" と推測されたバグ (GH 44105)

  • Period コンストラクターが np.timedelta64("NaT") を誤って許可したバグ (GH 44507)

  • PeriodIndex.to_timestamp() で、連続しないデータを持つインデックスに対して誤った値が返されたバグ (GH 44100)

  • PeriodDtype を持つ Series.where() で、where 呼び出しが何も置換すべきではない場合に誤ってエラーが発生したバグ (GH 45135)

プロット#

  • 非数値データが与えられた場合、DataFrame.boxplot() は、DataFrame.hist() のような他のプロット関数と同様に、分かりにくい KeyError または ZeroDivisionError ではなく、ValueError を発生させるようになりました (GH 43480)

Groupby/resample/rolling#

再整形#

  • 多次元 numpy.ndarray から DataFrame 列を作成する際のエラーメッセージが改善されました (GH 42463)

  • concat() で、Index に重複があり複数のキーを持つ DataFrame を連結する際に、重複するレベルエントリを持つ MultiIndex が作成されたバグ (GH 42651)

  • Series の重複するインデックスと非厳密な pandas.CategoricalIndex() での pandas.cut() のバグ (GH 42185, GH 42425)

  • DataFrame.append() で、追加された列が一致しない場合にデータ型を保持できなかったバグ (GH 43392)

  • concat() で、boolboolean データ型が連結された結果、boolean データ型ではなく object データ型になったバグ (GH 42800)

  • crosstab() で、入力がカテゴリカルな Series であり、片方または両方の Series に存在しないカテゴリがあり、margins=True の場合のバグ。以前は、欠損カテゴリのマージン値は NaN でしたが、現在は正しく 0 と報告されます (GH 43505)

  • concat() で、objs 引数のすべてが同じインデックスを持ち、keys 引数に重複が含まれていた場合に失敗したバグ (GH 43595)

  • concat() で、sort パラメーターが無視されたバグ (GH 43375)

  • merge() で、on 引数に MultiIndex を列インデックスとして使用すると、内部で列を割り当てる際にエラーが返されたバグ (GH 43734)

  • crosstab() で、入力がリストまたはタプルであった場合に失敗したバグ (GH 44076)

  • DataFrame.append() で、Series オブジェクトのリストを追加する際に index.name を保持できなかったバグ (GH 44109)

  • Dataframe.apply() メソッドでのメタデータ伝播が修正され、その結果、Dataframe.transform(), Dataframe.nunique() および Dataframe.mode() の同じ問題も修正されました (GH 28283)

  • concat() で、すべてのレベルが欠損値のみで構成されている場合に MultiIndex のレベルが浮動小数点数にキャストされたバグ (GH 44900)

  • DataFrame.stack() で、ExtensionDtype 列が誤ってエラーを発生させたバグ (GH 43561)

  • merge() で、on キーワードを使用して異なる名前のインデックスを結合する際に KeyError が発生したバグ (GH 45094)

  • Series.unstack() で、オブジェクトが結果の列で不要な型推論を行ったバグ (GH 44595)

  • MultiIndex.join() で、重複する IntervalIndex レベルを持つ場合のバグ (GH 44096)

  • DataFrame.replace()Series.replace() のバグにより、regex パラメータに基づいて異なる dtype が結果として返される (GH 44864)

  • DataFrame.pivot() で、DataFrame のインデックスが MultiIndex であった場合に index=None を指定するとバグが発生する (GH 23955)

スパース#

  • DataFrame.sparse.to_coo() で、列名が一意でない場合に AttributeError が発生するバグ (GH 29564)

  • SparseArray.max() および SparseArray.min() で、非ヌル要素が0の配列に対して ValueError が発生するバグ (GH 43527)

  • DataFrame.sparse.to_coo() で、ゼロ以外のフィル値を黙ってゼロに変換してしまうバグ (GH 24817)

  • SparseArray の比較メソッドで、長さが一致しない配列ライクなオペランドに対して、入力に応じて AssertionError または不明瞭な ValueError が発生するバグ (GH 43863)

  • SparseArray の算術メソッド floordiv および mod で、ゼロ除算時の動作が非スパースな Series の動作と一致しないバグ (GH 38172)

  • SparseArray の単項メソッドと SparseArray.isna() がインデックスを再計算しないバグ (GH 44955)

ExtensionArray#

  • array()PandasArray を保持できないバグ (GH 43887)

  • NumPy の ufuncs np.absnp.positivenp.negative は、それぞれ __abs__, __pos__, __neg__ を実装する ExtensionArray に対して呼び出されたときに dtype を正しく保持するようになりました。特にこれは TimedeltaArray で修正されました (GH 43899, GH 23316)

  • NumPy の ufuncs np.minimum.reduce np.maximum.reducenp.add.reduce、および np.prod.reduce は、IntegerDtype または FloatDtype を持つ Series に対して NotImplementedError を発生させる代わりに、正しく動作するようになりました (GH 43923, GH 44793)

  • out キーワードを持つ NumPy ufuncs が IntegerDtype および FloatingDtype を持つ配列でサポートされるようになりました (GH 45122)

  • 多数の列を拡張 dtype で使用する場合に、断片化された DataFrame について PerformanceWarning が発生するのを回避しました (GH 44098)

  • IntegerArray および FloatingArray の構築で、一致しない NA 値 (例: np.timedelta64("NaT")) が数値 NA に誤って強制されるバグ (GH 44514)

  • BooleanArray.__eq__() および BooleanArray.__ne__() で、互換性のない型 (文字列など) との比較で TypeError が発生するバグ。DataFrame.replace() が、nullable なブール列が含まれている場合に TypeError を発生させることがあった (GH 44499)

  • array() で、float16 dtype の ndarray が渡されたときに誤ってエラーが発生するバグ (GH 44715)

  • BooleanArray に対して np.sqrt を呼び出すと、不正な形式の FloatingArray が返されるバグ (GH 44715)

  • Series.where()ExtensionDtype を使用し、otherSeries の dtype と互換性のない NA スカラー (例: 数値 dtype の NaT) である場合に、互換性のある NA 値に誤ってキャストされるバグ (GH 44697)

  • Series.replace() で、value=None を明示的に渡すと value が渡されなかったかのように扱われ、結果に None が含まれないバグ (GH 36984, GH 19998)

  • Series.replace() で、no-op の置換において不要なダウンキャストが行われるバグ (GH 44498)

  • Series.replace() で、FloatDtypestring[python]、または string[pyarrow] の dtype が可能な場合に保持されないバグ (GH 33484, GH 40732, GH 31644, GH 41215, GH 25438)

Styler#

  • Styler のバグで、初期化時の uuid が浮動アンダースコアを維持していた (GH 43037)

  • Styler.to_html() のバグで、to_html メソッドが引数付きで呼び出された場合、Styler オブジェクトが更新されていた (GH 43034)

  • Styler.copy() のバグで、uuid が以前にコピーされていなかった (GH 40675)

  • Styler.apply() のバグで、Series オブジェクトを返す関数が、そのインデックスラベルの整合性に関して正しく処理されていなかった (GH 13657, GH 42014)

  • 名前付き Index を持つ空の DataFrame をレンダリングする際のバグ (GH 43305)

  • 単一レベルの MultiIndex をレンダリングする際のバグ (GH 43383)

  • 非スパースレンダリングと Styler.hide_columns() または Styler.hide_index() を組み合わせる際のバグ (GH 43464)

  • Styler で複数のセレクタを使用する場合に、テーブルスタイルを設定するバグ (GH 44011)

  • 行トリミングと列トリミングが非表示の行を反映しないバグ (GH 43703, GH 44247)

その他#

  • DataFrame.astype() で、一意でない列と Seriesdtype 引数を使用した場合のバグ (GH 44417)

  • CustomBusinessMonthBegin.__add__() (CustomBusinessMonthEnd.__add__()) のバグで、ターゲット月の開始 (終了) がすでに営業日である場合に、追加の offset パラメータが適用されない (GH 41356)

  • RangeIndex.union() で、一致する (step が偶数) RangeIndex と、step / 2 より厳密に小さい差で開始が異なる場合にバグが発生する (GH 44019)

  • RangeIndex.difference()sort=None および step<0 を指定した場合にソートに失敗するバグ (GH 44085)

  • Series.replace()DataFrame.replace() で、value=None と ExtensionDtypes を使用した場合のバグ (GH 44270, GH 37899)

  • FloatingArray.equals() で、np.nan 値を含む2つの配列が等しいと見なされないバグ (GH 44382)

  • DataFrame.shift()axis=1ExtensionDtype 列を使用し、互換性のない fill_value が渡されたときに誤ってエラーが発生するバグ (GH 44564)

  • DataFrame.shift()axis=1periodslen(frame.columns) より大きい場合に無効な DataFrame が生成されるバグ (GH 44978)

  • DataFrame.diff()int オブジェクトではなく NumPy の整数オブジェクトを渡した場合のバグ (GH 44572)

  • Series.replace() で、regex=Truenp.nan 値を含む Series とともに使用した場合に ValueError が発生するバグ (GH 43344)

  • DataFrame.to_records() で、名前が不足している場合に level_n に置き換えられたときに、誤った n が使用されるバグ (GH 44818)

  • DataFrame.eval()resolvers 引数がデフォルトの resolvers をオーバーライドしてしまうバグ (GH 34966)

  • Series.__repr__() および DataFrame.__repr__() が、インデックス内のすべての null 値を「NaN」に置き換えるのではなく、実際の文字列表現を使用するようになりました。「NaN」は float("nan") のみで使用されます (GH 45263)

貢献者#

このリリースには合計275名がパッチを貢献しました。名前に「+」が付いている方は今回初めてパッチを貢献しました。

  • Abhishek R

  • アルバート・ビラノバ・デル・モラル

  • Alessandro Bisiani +

  • Alex Lim

  • Alex-Gregory-1 +

  • Alexander Gorodetsky

  • Alexander Regueiro +

  • Alexey Györi

  • Alexis Mignon

  • Aleš Erjavec

  • Ali McMaster

  • Alibi +

  • Andrei Batomunkuev +

  • Andrew Eckart +

  • Andrew Hawyrluk

  • Andrew Wood

  • Anton Lodder +

  • Armin Berres +

  • Arushi Sharma +

  • Benedikt Heidrich +

  • Beni Bienz +

  • Benoît Vinot

  • Bert Palm +

  • Boris Rumyantsev +

  • Brian Hulette

  • Brock

  • Bruno Costa +

  • Bryan Racic +

  • Caleb Epstein

  • Calvin Ho

  • ChristofKaufmann +

  • Christopher Yeh +

  • Chuliang Xiao +

  • ClaudiaSilver +

  • DSM

  • Daniel Coll +

  • Daniel Schmidt +

  • Dare Adewumi

  • David +

  • David Sanders +

  • David Wales +

  • Derzan Chiang +

  • DeviousLab +

  • Dhruv B Shetty +

  • Digres45 +

  • Dominik Kutra +

  • Drew Levitt +

  • DriesS

  • EdAbati

  • Elle

  • Elliot Rampono

  • Endre Mark Borza

  • Erfan Nariman

  • Evgeny Naumov +

  • Ewout ter Hoeven +

  • ファンチェン・リー

  • Felix Divo

  • Felix Dulys +

  • Francesco Andreuzzi +

  • Francois Dion +

  • Frans Larsson +

  • Fred Reiss

  • GYvan

  • Gabriel Di Pardi Arruda +

  • Gesa Stupperich

  • Giacomo Caria +

  • Greg Siano +

  • Griffin Ansel

  • Hiroaki Ogasawara +

  • Horace +

  • Horace Lai +

  • アーブ・ラスティッグ

  • アイザック・ヴィルシュプ

  • JHM Darbyshire (MBP)

  • JHM ダービーシャー (iMac)

  • JHM Darbyshire +

  • Jack Liu

  • Jacob Skwirsk +

  • Jaime Di Cristina +

  • James Holcombe +

  • Janosh Riebesell +

  • Jarrod Millman

  • Jason Bian +

  • ジェフ・リーバック

  • Jernej Makovsek +

  • Jim Bradley +

  • Joel Gibson +

  • Joeperdefloep +

  • Johannes Mueller +

  • John S Bogaardt +

  • John Zangwill +

  • Jon Haitz Legarreta Gorroño +

  • Jon Wiggins +

  • Jonas Haag +

  • Joris Van den Bossche

  • Josh Friedlander

  • José Duarte +

  • Julian Fleischer +

  • Julien de la Bruère-T

  • Justin McOmie

  • Kadatatlu Kishore +

  • Kaiqi Dong

  • Kashif Khan +

  • Kavya9986 +

  • Kendall +

  • ケビン・シェパード

  • Kiley Hewitt

  • Koen Roelofs +

  • Krishna Chivukula

  • KrishnaSai2020

  • Leonardo Freua +

  • Leonardus Chen

  • Liang-Chi Hsieh +

  • Loic Diridollou +

  • Lorenzo Maffioli +

  • Luke Manley +

  • LunarLanding +

  • Marc Garcia

  • Marcel Bittar +

  • Marcel Gerber +

  • Marco Edward Gorelli

  • マルコ・ゴレリ

  • MarcoGorelli

  • Marvin +

  • Mateusz Piotrowski +

  • Mathias Hauser +

  • Matt Richards +

  • Matthew Davis +

  • Matthew Roeschke

  • Matthew Zeitlin

  • Matthias Bussonnier

  • Matti Picus

  • Mauro Silberberg +

  • マキシム・イワノフ

  • Maximilian Carr +

  • MeeseeksMachine

  • Michael Sarrazin +

  • Michael Wang +

  • Michał Górny +

  • Mike Phung +

  • Mike Taves +

  • Mohamad Hussein Rkein +

  • NJOKU OKECHUKWU VALENTINE +

  • Neal McBurnett +

  • Nick Anderson +

  • Nikita Sobolev +

  • Olivier Cavadenti +

  • PApostol +

  • Pandas Development Team

  • Patrick Hoefler

  • Peter

  • Peter Tillmann +

  • Prabha Arivalagan +

  • Pradyumna Rahul

  • Prerana Chakraborty

  • Prithvijit +

  • Rahul Gaikwad +

  • Ray Bell

  • Ricardo Martins +

  • Richard Shadrach

  • Robbert-jan ‘t Hoen +

  • Robert Voyer +

  • Robin Raymond +

  • Rohan Sharma +

  • Rohan Sirohia +

  • Roman Yurchak

  • Ruan Pretorius +

  • Sam James +

  • Scott Talbert

  • Shashwat Sharma +

  • Sheogorath27 +

  • Shiv Gupta

  • ショーハム・デブナス

  • Simon Hawkins

  • Soumya +

  • Stan West +

  • Stefanie Molin +

  • Stefano Alberto Russo +

  • Stephan Heßelmann

  • Stephen

  • Suyash Gupta +

  • スヴェン

  • Swanand01 +

  • Sylvain Marié +

  • TLouf

  • Tania Allard +

  • テルジ・ピーターセン

  • TheDerivator +

  • Thomas Dickson

  • Thomas Kastl +

  • Thomas Kluyver

  • Thomas Li

  • Thomas Smith

  • Tim Swast

  • Tim Tran +

  • Tobias McNulty +

  • Tobias Pitters

  • Tomoki Nakagawa +

  • Tony Hirst +

  • トルステン・ヴェルトワイン

  • V.I. Wood +

  • Vaibhav K +

  • Valentin Oliver Loftsson +

  • Varun Shrivastava +

  • Vivek Thazhathattil +

  • Vyom Pathak

  • Wenjun Si

  • William Andrea +

  • William Bradley +

  • Wojciech Sadowski +

  • Yao-Ching Huang +

  • Yash Gupta +

  • Yiannis Hadjicharalambous +

  • ヨシキ・バスケス・バエザ

  • ユアンハオ・ゲン

  • Yury Mikhaylov

  • Yvan Gatete +

  • Yves Delley +

  • Zach Rait

  • Zbyszek Królikowski +

  • Zero +

  • Zheyuan

  • Zhiyi Wu +

  • aiudirog

  • ali sayyah +

  • aneesh98 +

  • aptalca

  • arw2019 +

  • attack68

  • brendandrury +

  • bubblingoak +

  • calvinsomething +

  • claws +

  • deponovo +

  • dicristina

  • el-g-1 +

  • evensure +

  • fotino21 +

  • fshi01 +

  • gfkang +

  • github-actions[bot]

  • i-aki-y

  • jbrockmendel

  • jreback

  • juliandwain +

  • jxb4892 +

  • kendall smith +

  • lmcindewar +

  • lrepiton

  • maximilianaccardo +

  • michal-gh

  • neelmraman

  • パルテフ

  • phofl +

  • pratyushsharan +

  • quantumalaviya +

  • rafael +

  • realead

  • rocabrera +

  • rosagold

  • saehuihwang +

  • salomondush +

  • shubham11941140 +

  • srinivasan +

  • stphnlyd

  • suoniq

  • trevorkask +

  • tushushu

  • tyuyoshi +

  • usersblock +

  • vernetya +

  • vrserpa +

  • willie3838 +

  • zeitlinv +

  • zhangxiaoxing +