2.2.0の新機能 (2024年1月19日)#
これらはpandas 2.2.0の変更点です。pandasの他のバージョンを含む完全な変更ログは、リリースノートをご覧ください。
pandas 3.0での今後の変更点#
pandas 3.0では、pandasのデフォルト動作に2つの大きな変更がもたらされます。
Copy-on-Write#
現在オプションであるCopy-on-Writeモードが、pandas 3.0でデフォルトで有効になります。現在の動作を維持するオプションはなくなります。新しい動作セマンティクスは、Copy-on-Writeに関するユーザーガイドで説明されています。
新しい動作は、pandas 2.0以降、以下のオプションで有効にできます。
pd.options.mode.copy_on_write = True
この変更は、コピーとビューに関してpandasがどのように動作するかに異なる変更をもたらします。これらの変更の一部は、チェーン割り当ての変更のように明確な非推奨化を可能にします。他の変更はより微妙であり、そのため、警告はpandas 2.2で有効にできるオプションの背後に隠されています。
pd.options.mode.copy_on_write = "warn"
このモードは、ほとんどのクエリには実際には関係のない多くの異なるシナリオで警告を発します。このモードを試すことをお勧めしますが、これらの警告をすべて取り除く必要はありません。移行ガイドでアップグレードプロセスがより詳しく説明されています。
専用の文字列データ型 (Arrowによるサポート) がデフォルトに#
これまで、pandasは文字列列をNumPyのオブジェクトデータ型で表現していました。この表現には、パフォーマンスの遅さや大きなメモリフットプリントなど、多くの問題がありました。これはpandas 3.0で変更されます。pandasは、文字列列をArrowでサポートされた新しいstringデータ型として推論するようになります。これにより、パフォーマンスとメモリ使用量が大幅に改善されます。
以前の動作
In [1]: ser = pd.Series(["a", "b"])
Out[1]:
0 a
1 b
dtype: object
新しい動作
In [1]: ser = pd.Series(["a", "b"])
Out[1]:
0 a
1 b
dtype: string
これらのシナリオで使用される文字列データ型は、欠損値のセマンティクスやこれらの列に対する一般的な操作を含め、ほとんどNumPyのオブジェクトと同じように動作します。
この変更には、API全体でいくつかの追加変更が含まれます。
現在、
dtype="string"を指定すると、NumPy配列に保存されるPython文字列によってサポートされるdtypeが作成されます。これはpandas 3.0で変更され、このdtypeはArrowによってサポートされる文字列列を作成します。列名とインデックスもArrow文字列によってサポートされます。
この変更に対応するため、pandas 3.0ではPyArrowが必須の依存関係になります。
この将来のdtype推論ロジックは、以下で有効にできます。
pd.options.future.infer_string = True
機能強化#
to_sql および read_sql での ADBC ドライバーのサポート#
read_sql() と to_sql() は、Apache Arrow ADBC ドライバーで動作するようになりました。SQLAlchemy を介して使用される従来のドライバーと比較して、ADBC ドライバーは大幅なパフォーマンス向上、より優れた型サポート、よりクリーンな NULL 処理を提供します。
import adbc_driver_postgresql.dbapi as pg_dbapi
df = pd.DataFrame(
[
[1, 2, 3],
[4, 5, 6],
],
columns=['a', 'b', 'c']
)
uri = "postgresql://postgres:postgres@localhost/postgres"
with pg_dbapi.connect(uri) as conn:
df.to_sql("pandas_table", conn, index=False)
# for round-tripping
with pg_dbapi.connect(uri) as conn:
df2 = pd.read_sql("pandas_table", conn)
Arrow 型システムは、PostgreSQL のようなデータベースが提供できるものとより密接に一致する、より広範な型を提供します。例として、さまざまなデータベースと pandas バックエンドで利用できる型の (網羅的ではない) リストを示します。
numpy/pandas |
arrow |
postgres |
sqlite |
|---|---|---|---|
int16/Int16 |
int16 |
SMALLINT |
INTEGER |
int32/Int32 |
int32 |
INTEGER |
INTEGER |
int64/Int64 |
int64 |
BIGINT |
INTEGER |
float32 |
float32 |
REAL |
REAL |
float64 |
float64 |
DOUBLE PRECISION |
REAL |
object |
string |
TEXT |
TEXT |
bool |
|
BOOLEAN |
|
datetime64[ns] |
timestamp(us) |
TIMESTAMP |
|
datetime64[ns,tz] |
timestamp(us,tz) |
TIMESTAMPTZ |
|
date32 |
DATE |
||
month_day_nano_interval |
INTERVAL |
||
binary |
BINARY |
BLOB |
|
decimal128 |
DECIMAL [1] |
||
list |
ARRAY [1] |
||
struct |
|
脚注
DataFrameのライフサイクル全体でデータベース型を可能な限り維持することに関心があるユーザーは、read_sql()のdtype_backend="pyarrow"引数を活用することをお勧めします。
# for round-tripping
with pg_dbapi.connect(uri) as conn:
df2 = pd.read_sql("pandas_table", conn, dtype_backend="pyarrow")
これにより、データが従来のpandas/NumPy型システムに変換されるのを防ぎます。これにより、SQL型がラウンドトリップできない方法で変換されることがよくあります。
ADBC ドライバーとその開発状況の完全なリストについては、ADBC Driver Implementation Status ドキュメントを参照してください。
1つ以上の条件に基づいてpandas Seriesを作成する#
Series.case_when()関数が、1つ以上の条件に基づいてSeriesオブジェクトを作成するために追加されました。(GH 39154)
In [1]: import pandas as pd
In [2]: df = pd.DataFrame(dict(a=[1, 2, 3], b=[4, 5, 6]))
In [3]: default=pd.Series('default', index=df.index)
In [4]: default.case_when(
...: caselist=[
...: (df.a == 1, 'first'), # condition, replacement
...: (df.a.gt(1) & df.b.eq(5), 'second'), # condition, replacement
...: ],
...: )
...:
Out[4]:
0 first
1 second
2 default
dtype: object
NumPyのNULL許容型およびArrow型に対するto_numpyは、適切なNumPy dtypeに変換されます#
NumPyのNULL許容型およびArrow型に対するto_numpyは、NULL許容型およびPyArrowでサポートされる拡張dtypeの場合、object dtypeの代わりに適切なNumPy dtypeに変換されるようになりました。
以前の動作
In [1]: ser = pd.Series([1, 2, 3], dtype="Int64")
In [2]: ser.to_numpy()
Out[2]: array([1, 2, 3], dtype=object)
新しい動作
In [5]: ser = pd.Series([1, 2, 3], dtype="Int64")
In [6]: ser.to_numpy()
Out[6]: array([1, 2, 3])
In [7]: ser = pd.Series([1, 2, 3], dtype="timestamp[ns][pyarrow]")
In [8]: ser.to_numpy()
Out[8]:
array(['1970-01-01T00:00:00.000000001', '1970-01-01T00:00:00.000000002',
'1970-01-01T00:00:00.000000003'], dtype='datetime64[ns]')
デフォルトのNumPy dtype (引数なし) は次のように決定されます。
float dtypeはNumPy floatにキャストされます
欠損値のない整数dtypeはNumPy整数dtypeにキャストされます
欠損値のある整数dtypeはNumPy float dtypeにキャストされ、
NaNが欠損値インジケータとして使用されます欠損値のないブールdtypeはNumPy bool dtypeにキャストされます
欠損値のあるブールdtypeはobject dtypeを保持します
datetimeおよびtimedelta型はそれぞれNumPy datetime64およびtimedelta64型にキャストされ、
NaTが欠損値インジケータとして使用されます
PyArrow構造化データ用のSeries.structアクセサー#
Series.structアクセサーは、struct[pyarrow] dtypeのSeriesデータを処理するための属性とメソッドを提供します。たとえば、Series.struct.explode()は、PyArrow構造化データをpandas DataFrameに変換します。(GH 54938)
In [9]: import pyarrow as pa
In [10]: series = pd.Series(
....: [
....: {"project": "pandas", "version": "2.2.0"},
....: {"project": "numpy", "version": "1.25.2"},
....: {"project": "pyarrow", "version": "13.0.0"},
....: ],
....: dtype=pd.ArrowDtype(
....: pa.struct([
....: ("project", pa.string()),
....: ("version", pa.string()),
....: ])
....: ),
....: )
....:
In [11]: series.struct.explode()
Out[11]:
project version
0 pandas 2.2.0
1 numpy 1.25.2
2 pyarrow 13.0.0
Series.struct.field()を使用して、(ネストされている可能性のある)構造体フィールドにインデックスを付けます。
In [12]: series.struct.field("project")
Out[12]:
0 pandas
1 numpy
2 pyarrow
Name: project, dtype: string[pyarrow]
PyArrowリストデータ用のSeries.listアクセサー#
Series.listアクセサーは、list[pyarrow] dtypeのSeriesデータを処理するための属性とメソッドを提供します。例えば、Series.list.__getitem__()を使用すると、Series内のpyarrowリストにインデックスを付けることができます。(GH 55323)
In [13]: import pyarrow as pa
In [14]: series = pd.Series(
....: [
....: [1, 2, 3],
....: [4, 5],
....: [6],
....: ],
....: dtype=pd.ArrowDtype(
....: pa.list_(pa.int64())
....: ),
....: )
....:
In [15]: series.list[0]
Out[15]:
0 1
1 4
2 6
dtype: int64[pyarrow]
read_excel() 用の Calamine エンジン#
read_excel() に calamine エンジンが追加されました。これは、Rust ライブラリ calamine の Python バインディングを提供する python-calamine を使用します。このエンジンは、Excel ファイル (.xlsx, .xlsm, .xls, .xlsb) および OpenDocument スプレッドシート (.ods) をサポートします (GH 50395)。
このエンジンには2つの利点があります。
Calamine は他のエンジンよりも高速なことが多く、一部のベンチマークでは 'openpyxl' より最大 5 倍、'odf' より 20 倍、'pyxlsb' より 4 倍、'xlrd' より 1.5 倍高速な結果が示されています。ただし、'openpyxl' と 'pyxlsb' は、行の遅延イテレーションのため、大きなファイルから少数の行を読み取る場合は高速です。
Calamine は
.xlsbファイルの datetime の認識をサポートしています。これは、pandas で.xlsbファイルを読み取れる唯一の他のエンジンである 'pyxlsb' とは異なります。
pd.read_excel("path_to_file.xlsb", engine="calamine")
詳細については、IO ツールのユーザーガイドの Calamine (Excel および ODS ファイル) を参照してください。
その他の機能強化#
method パラメータを
multiに設定したto_sql()が Oracle バックエンドで動作するようになりました。Series.attrs/DataFrame.attrsは、attrsを伝播するためにディープコピーを使用するようになりました (GH 54134)。get_dummies()は、入力 dtype と互換性のある拡張 dtypebooleanまたはbool[pyarrow]を返すようになりました (GH 56273)。read_csv()がengine="pyarrow"とともにon_bad_linesパラメータをサポートするようになりました (GH 54480)。read_sas()は、SAS にネイティブに保存されているものとより一致する解像度を持つdatetime64dtypes を返すようになり、datetime64[ns]dtype で保存できない場合に object-dtype を返すことを避けるようになりました (GH 56127)。read_spss()は、メタデータをDataFrame.attrsに保存するDataFrameを返すようになりました (GH 54264)。tseries.api.guess_datetime_format()が公開 API の一部となりました (GH 54727)。DataFrame.apply()は、numba の使用 (viaengine="numba") を許可し、渡された関数を JIT コンパイルすることで、潜在的な高速化を可能にします (GH 54666)。ExtensionArray._explode()インターフェースメソッドが追加され、explodeメソッドの拡張型実装が可能になりました。(GH 54833)ExtensionArray.duplicated()が追加され、duplicatedメソッドの拡張型実装が可能になりました。(GH 55255)Series.ffill(),Series.bfill(),DataFrame.ffill(), およびDataFrame.bfill()にlimit_area引数が追加されました。サードパーティのExtensionArray作者は、この引数を_pad_or_backfillメソッドに追加する必要があります (GH 56492)。read_excel()のengine_kwargsを使用して、read_only、data_only、keep_links引数を openpyxl に渡せるようになりました (GH 55027)。ArrowDtypeおよびマスクされたdtypeに対してSeries.interpolate()およびDataFrame.interpolate()を実装しました (GH 56267)。Series.value_counts()のマスクされたアルゴリズムを実装しました (GH 54984)。ArrowDtypeとpyarrow.duration型のSeries.dt()メソッドと属性を実装しました (GH 52284)。ArrowDtypeのSeries.str.extract()を実装しました (GH 56268)。DatetimeIndex.to_period()で、期間頻度としてサポートされていない頻度 (例:"BMS") を指定した場合に表示されるエラーメッセージを改善しました (GH 56243)。string[pyarrow]とstring[pyarrow_numpy]の両方の dtype が、長い列でのオーバーフローを避けるために PyArrow のlarge_string型を利用するようになりました (GH 56259)。
注目すべきバグ修正#
これらは、注目すべき動作変更をもたらす可能性のあるバグ修正です。
merge() と DataFrame.join() が、ドキュメント化されたソート動作を一貫して従うようになりました#
以前のバージョンのpandasでは、merge()とDataFrame.join()は、ドキュメント化されたソート動作に従った結果を常に返すとは限りませんでした。pandasは、mergeおよびjoin操作でドキュメント化されたソート動作に従うようになりました。(GH 54611, GH 56426, GH 56443)。
ドキュメントに記載されているように、sort=Trueは、結果のDataFrameで結合キーを辞書順にソートします。sort=Falseの場合、結合キーの順序は結合タイプ (howキーワード) に依存します。
how="left": 左キーの順序を保持します。how="right": 右キーの順序を保持します。how="inner": 左キーの順序を保持します。how="outer": キーを辞書順にソートします。
動作が変更される例として、一意ではない左結合キーとsort=Falseを持つ内部結合があります。
In [16]: left = pd.DataFrame({"a": [1, 2, 1]})
In [17]: right = pd.DataFrame({"a": [1, 2]})
In [18]: result = pd.merge(left, right, how="inner", on="a", sort=False)
以前の動作
In [5]: result
Out[5]:
a
0 1
1 1
2 2
新しい動作
In [19]: result
Out[19]:
a
0 1
1 2
2 1
レベルが異なる場合、merge() と DataFrame.join() はレベルを並べ替えなくなりました#
以前のバージョンのpandasでは、merge()とDataFrame.join()は、異なるレベルを持つ2つのインデックスを結合する際にインデックスレベルを並べ替えることがありました。(GH 34133)
In [20]: left = pd.DataFrame({"left": 1}, index=pd.MultiIndex.from_tuples([("x", 1), ("x", 2)], names=["A", "B"]))
In [21]: right = pd.DataFrame({"right": 2}, index=pd.MultiIndex.from_tuples([(1, 1), (2, 2)], names=["B", "C"]))
In [22]: left
Out[22]:
left
A B
x 1 1
2 1
In [23]: right
Out[23]:
right
B C
1 1 2
2 2 2
In [24]: result = left.join(right)
以前の動作
In [5]: result
Out[5]:
left right
B A C
1 x 1 1 2
2 x 2 1 2
新しい動作
In [25]: result
Out[25]:
left right
A B C
x 1 1 1 2
2 2 1 2
依存関係の最小バージョン引き上げ#
オプションの依存関係の場合、一般的な推奨事項は最新バージョンを使用することです。最低テストバージョンよりも古いオプションの依存関係は動作する可能性がありますが、サポート対象とはみなされません。次の表は、最低テストバージョンが引き上げられたオプションの依存関係を示しています。
パッケージ |
新しい最小バージョン |
|---|---|
beautifulsoup4 |
4.11.2 |
blosc |
1.21.3 |
bottleneck |
1.3.6 |
fastparquet |
2022.12.0 |
fsspec |
2022.11.0 |
gcsfs |
2022.11.0 |
lxml |
4.9.2 |
matplotlib |
3.6.3 |
numba |
0.56.4 |
numexpr |
2.8.4 |
qtpy |
2.3.0 |
openpyxl |
3.1.0 |
psycopg2 |
2.9.6 |
pyreadstat |
1.2.0 |
pytables |
3.8.0 |
pyxlsb |
1.0.10 |
s3fs |
2022.11.0 |
scipy |
1.10.0 |
sqlalchemy |
2.0.0 |
表計算 |
0.9.0 |
xarray |
2022.12.0 |
xlsxwriter |
3.0.5 |
zstandard |
0.19.0 |
pyqt5 |
5.15.8 |
tzdata |
2022.7 |
詳細については、依存関係 および オプションの依存関係 を参照してください。
その他の API の変更#
ハッシュ操作のパフォーマンスを向上させるため、NULL許容拡張dtypeのハッシュ値が変更されました。(GH 56507)
testing.assert_frame_equal()およびtesting.assert_series_equal()において、check_exactは浮動小数点 dtype に対してのみ有効になりました。特に、整数 dtype は常に厳密にチェックされます (GH 55882)。
非推奨#
チェーン割り当て#
pandas 3.0 (Copy-on-Write (CoW), PDEP-7) におけるコピー/ビュー動作への今後の大きな変更に備え、*チェーン割り当て*の非推奨化を開始しました。
チェーン割り当ては、2つの連続するインデックス操作を介してpandas DataFrameまたはSeriesを更新しようとするときに発生します。操作の種類と順序によっては、現在これが機能する場合としない場合があります。
典型的な例は次のとおりです。
df = pd.DataFrame({"foo": [1, 2, 3], "bar": [4, 5, 6]})
# first selecting rows with a mask, then assigning values to a column
# -> this has never worked and raises a SettingWithCopyWarning
df[df["bar"] > 5]["foo"] = 100
# first selecting the column, and then assigning to a subset of that column
# -> this currently works
df["foo"][df["bar"] > 5] = 100
この2番目のチェーン割り当ての例は、現在、元のdfを更新するために機能します。これはpandas 3.0では機能しなくなり、したがって私たちはこれを非推奨化し始めました。
>>> df["foo"][df["bar"] > 5] = 100
FutureWarning: ChainedAssignmentError: behaviour will change in pandas 3.0!
You are setting values through chained assignment. Currently this works in certain cases, but when using Copy-on-Write (which will become the default behaviour in pandas 3.0) this will never work to update the original DataFrame or Series, because the intermediate object on which we are setting values will behave as a copy.
A typical example is when you are setting values in a column of a DataFrame, like:
df["col"][row_indexer] = value
Use `df.loc[row_indexer, "col"] = values` instead, to perform the assignment in a single step and ensure this keeps updating the original `df`.
See the caveats in the documentation: https://pandas.dokyumento.jp/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
チェーン割り当ての使用を削除することで、この警告を修正し、コードがpandas 3.0に対応していることを確認できます。通常、これは例えば.locを使用して、割り当てを1ステップで行うことで可能です。上記の例では、次のようにできます。
df.loc[df["bar"] > 5, "foo"] = 100
同様の非推奨化は、次のようなチェーンされた方法で行われるインプレースメソッドにも適用されます。
>>> df["foo"].fillna(0, inplace=True)
FutureWarning: A value is trying to be set on a copy of a DataFrame or Series through chained assignment using an inplace method.
The behavior will change in pandas 3.0. This inplace method will never work because the intermediate object on which we are setting values always behaves as a copy.
For example, when doing 'df[col].method(value, inplace=True)', try using 'df.method({col: value}, inplace=True)' or df[col] = df[col].method(value) instead, to perform the operation inplace on the original object.
目的がDataFrame df の列を更新することである場合、ここでの代替手段は、df.fillna({"foo": 0}, inplace=True) のように df 自体でメソッドを呼び出すことです。
詳細は移行ガイドをご覧ください。
オフセットに対する M、Q、Y などのエイリアスを ME、QE、YE などに非推奨化#
以下の頻度エイリアスは非推奨になりました。(GH 9586)
オフセット |
非推奨エイリアス |
新しいエイリアス |
|---|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
例えば
以前の動作:
In [8]: pd.date_range('2020-01-01', periods=3, freq='Q-NOV')
Out[8]:
DatetimeIndex(['2020-02-29', '2020-05-31', '2020-08-31'],
dtype='datetime64[ns]', freq='Q-NOV')
将来の動作:
In [26]: pd.date_range('2020-01-01', periods=3, freq='QE-NOV')
Out[26]: DatetimeIndex(['2020-02-29', '2020-05-31', '2020-08-31'], dtype='datetime64[ns]', freq='QE-NOV')
自動ダウンキャストの非推奨化#
いくつかのメソッドにおけるobject dtype結果の自動ダウンキャストが非推奨になりました。これは、動作が値に依存するため、予測が困難な方法でdtypeをサイレントに変更することがありました。さらに、pandasはサイレントなdtype変更から移行しています。(GH 54710, GH 54261)
これらのメソッドは以下のとおりです。
将来の現在の動作を再現するには、DataFrame.infer_objects() を明示的に呼び出してください。
result = result.infer_objects(copy=False)
または、astype を使用して、すべて丸められた浮動小数点数を整数に明示的にキャストします。
将来の動作を選択するには、以下のオプションを設定します。
In [9]: pd.set_option("future.no_silent_downcasting", True)
その他の非推奨化#
Timedelta.resolution_string()は、頻度エイリアスにおけるそれぞれの非推奨化との互換性のために、H、T、S、L、U、Nの代わりにh、min、s、ms、us、nsを返すように変更されました (GH 52536)。offsets.Day.delta,offsets.Hour.delta,offsets.Minute.delta,offsets.Second.delta,offsets.Milli.delta,offsets.Micro.delta,offsets.Nano.deltaは非推奨になりました。代わりにpd.Timedelta(obj)を使用してください (GH 55498)。pandas.api.types.is_interval()とpandas.api.types.is_period()は非推奨になりました。代わりにisinstance(obj, pd.Interval)とisinstance(obj, pd.Period)を使用してください (GH 55264)。read_gbq()およびDataFrame.to_gbq()は非推奨になりました。代わりにpandas_gbq.read_gbqおよびpandas_gbq.to_gbqを使用してください https://pandas-gbq.readthedocs.io/en/latest/api.html (GH 55525)。DataFrameGroupBy.fillna()およびSeriesGroupBy.fillna()は非推奨になりました。前方および後方補完にはDataFrameGroupBy.ffill()、DataFrameGroupBy.bfill()を、単一値で補完するにはDataFrame.fillna()(またはSeries相当) を使用してください (GH 55718)。DateOffset.is_anchored()は非推奨になりました。Tick 以外のサブクラスの場合はobj.n == 1を使用してください (Tick の場合は常に False でした) (GH 55388)。DatetimeArray.__init__()およびTimedeltaArray.__init__()は非推奨になりました。代わりにarray()を使用してください (GH 55623)。Index.format()は非推奨になりました。代わりにindex.astype(str)またはindex.map(formatter)を使用してください (GH 55413)。Series.ravel()は非推奨になりました。基になる配列はすでに1Dであるため、ravelは不要です (GH 52511)。Series.resample()とDataFrame.resample()をPeriodIndex(および 'convention' キーワード) とともに使用することは非推奨になりました。代わりに、リサンプリングする前にDatetimeIndexに変換 (.to_timestamp()を使用) してください (GH 53481)。Series.view()は非推奨になりました。dtypeを変更するには、代わりにSeries.astype()を使用してください (GH 20251)。offsets.Tick.is_anchored()は非推奨になりました。代わりにFalseを使用してください (GH 55388)。core.internalsメンバーBlock、ExtensionBlock、DatetimeTZBlockは非推奨になりました。代わりにパブリック API を使用してください (GH 55139)。PeriodIndexコンストラクタにおけるyear、month、quarter、day、hour、minute、secondキーワードは非推奨になりました。代わりにPeriodIndex.from_fields()を使用してください (GH 55960)。Index.view()で型を引数として渡すことは非推奨になりました。代わりに引数なしで呼び出してください (GH 55709)。date_range()、timedelta_range()、period_range()、およびinterval_range()で非整数periods引数を許可することは非推奨になりました (GH 56036)。DataFrame.to_clipboard()において、キーワード引数以外の引数を許可することは非推奨になりました (GH 54229)。DataFrame.to_csv()において、path_or_buf以外のキーワード引数以外の引数を許可することは非推奨になりました (GH 54229)。DataFrame.to_dict()において、キーワード引数以外の引数を許可することは非推奨になりました (GH 54229)。DataFrame.to_excel()において、excel_writer以外のキーワード引数以外の引数を許可することは非推奨になりました (GH 54229)。DataFrame.to_gbq()において、destination_table以外のキーワード引数以外の引数を許可することは非推奨になりました (GH 54229)。DataFrame.to_hdf()において、path_or_buf以外のキーワード引数以外の引数を許可することは非推奨になりました (GH 54229)。DataFrame.to_html()において、buf以外のキーワード引数以外の引数を許可することは非推奨になりました (GH 54229)。DataFrame.to_json()において、path_or_buf以外のキーワード引数以外の引数を許可することは非推奨になりました (GH 54229)。DataFrame.to_latex()において、buf以外のキーワード引数以外の引数を許可することは非推奨になりました (GH 54229)。DataFrame.to_markdown()において、buf以外のキーワード引数以外の引数を許可することは非推奨になりました (GH 54229)。DataFrame.to_parquet()において、path以外のキーワード引数以外の引数を許可することは非推奨になりました (GH 54229)。DataFrame.to_pickle()において、path以外のキーワード引数以外の引数を許可することは非推奨になりました (GH 54229)。DataFrame.to_string()において、buf以外のキーワード引数以外の引数を許可することは非推奨になりました (GH 54229)。DataFrame.to_xml()において、path_or_buffer以外のキーワード引数以外の引数を許可することは非推奨になりました (GH 54229)。DataFrameにBlockManagerオブジェクトを、SeriesにSingleBlockManagerオブジェクトを渡すことは非推奨になりました (GH 52419)。オブジェクトdtypeインデックスを持つ
Index.insert()の動作は非推奨になりました。これは結果に対してサイレントに型推論を実行します。古い動作を維持するには、代わりにresult.infer_objects(copy=False)を明示的に呼び出してください。(GH 51363)Series.isin()およびIndex.isin()で、datetime64、timedelta64、およびPeriodDtypedtype を持つ非datetimeライクな値 (主に文字列) をキャストすることは非推奨になりました (GH 53111)。pandas入力を与えた場合の
Index、Series、DataFrameコンストラクタにおけるdtype推論は非推奨になりました。現在の動作を維持するには、入力に対して.infer_objectsを呼び出してください。(GH 56012)DataFrameにIndexを設定する際のdtype推論は非推奨になりました。代わりに明示的にキャストしてください。(GH 56102)DataFrameGroupBy.apply()とDataFrameGroupBy.resample()を使用する際に、グループを計算に含めることは非推奨になりました。グループを除外するにはinclude_groups=Falseを渡してください (GH 7155)。長さ1のリストライクでグループ化する際に、
DataFrameGroupBy.get_groupまたはSeriesGroupBy.get_groupにタプルを渡さないことは非推奨になりました (GH 25971)。YearBeginにおける頻度を示す文字列AS、および様々な会計年度開始日を持つ年次頻度を示す文字列AS-DEC、AS-JANなどは非推奨になりました (GH 54275)。YearEndにおける頻度を示す文字列A、および様々な会計年度末日を持つ年次頻度を示す文字列A-DEC、A-JANなどは非推奨になりました (GH 54275)。BYearBeginにおける頻度を示す文字列BAS、および様々な会計年度開始日を持つ年次頻度を示す文字列BAS-DEC、BAS-JANなどは非推奨になりました (GH 54275)。BYearEndにおける頻度を示す文字列BA、および様々な会計年度末日を持つ年次頻度を示す文字列BA-DEC、BA-JANなどは非推奨になりました (GH 54275)。Hour、BusinessHour、CustomBusinessHourにおける頻度を示す文字列H、BH、およびCBHは非推奨になりました (GH 52536)。to_timedelta()における単位を示す文字列H、S、U、Nは非推奨になりました。(GH 52536)Minute、Second、Milli、Micro、Nanoにおける頻度を示す文字列T、S、L、U、およびNは非推奨になりました (GH 52536)。read_csv()で、keep_date_colキーワードとともに解析された datetime 列を結合するサポートは非推奨になりました (GH 55569)。DataFrameGroupBy.grouperとSeriesGroupBy.grouperは非推奨になりました。これらの属性は将来のバージョンのpandasで削除されます (GH 56521)。Grouping属性のgroup_index、result_index、およびgroup_arraylikeは非推奨になりました。これらは将来のバージョンのpandasで削除されます (GH 56148)。read_csv()およびread_table()のdelim_whitespaceキーワードは非推奨になりました。代わりにsep="\\s+"を使用してください (GH 55569)。to_datetime()、to_timedelta()、およびto_numeric()におけるerrors="ignore"オプションは非推奨になりました。代わりに明示的に例外を捕捉してください (GH 54467)。Series.resample()およびDataFrame.resample()におけるkindキーワードは非推奨になりました。代わりにオブジェクトのindexを明示的にキャストしてください (GH 55895)。PeriodIndexにおけるordinalキーワードは非推奨になりました。代わりにPeriodIndex.from_ordinals()を使用してください (GH 55960)。TimedeltaIndexの構築におけるunitキーワードは非推奨になりました。代わりにto_timedelta()を使用してください (GH 55499)。read_csv()およびread_table()のverboseキーワードが非推奨になりました (GH 55569)DataFrame.replace()およびSeries.replace()のCategoricalDtypeを伴う動作が非推奨になりました。将来のバージョンでは、replace はカテゴリを保持したまま値を変更します。カテゴリを変更するには、代わりにser.cat.rename_categoriesを使用してください (GH 55147)Series.value_counts()およびIndex.value_counts()のオブジェクト dtype を伴う動作が非推奨になりました。将来のバージョンでは、これらは結果のIndexに対して dtype 推論を実行しません。古い動作を保持するには、result.index = result.index.infer_objects()を実行してください (GH 56161)DataFrame.pivot_table()のobserved=Falseのデフォルトが非推奨になりました。将来のバージョンではTrueになります (GH 56236)拡張テストクラス
BaseNoReduceTests、BaseBooleanReduceTests、およびBaseNumericReduceTestsが非推奨になりました。代わりにBaseReduceTestsを使用してください (GH 54663)オプション
mode.data_managerおよびArrayManagerが非推奨になりました。将来のバージョンではBlockManagerのみが利用可能になります (GH 55043)DataFrame.stackの以前の実装が非推奨になりました。将来のバージョンを採用するにはfuture_stack=Trueを指定してください (GH 53515)
パフォーマンス改善#
testing.assert_frame_equal()およびtesting.assert_series_equal()でパフォーマンスが向上しました (GH 55949, GH 55971)axis=1および位置が揃っていないインデックスを持つオブジェクトを使用するconcat()でパフォーマンスが向上しました (GH 55084)get_dummies()でパフォーマンスが向上しました (GH 56089)ソートされた昇順キーで結合する場合の
merge()およびmerge_ordered()でパフォーマンスが向上しました (GH 56115)byがNoneではない場合のmerge_asof()でパフォーマンスが向上しました (GH 55580, GH 55678)多数の変数を持つファイルの場合の
read_stata()でパフォーマンスが向上しました (GH 55515)pyarrow のタイムスタンプと期間 dtype を集計する際の
DataFrame.groupby()でパフォーマンスが向上しました (GH 55031)順序付けされていないカテゴリカルインデックスで結合する場合の
DataFrame.join()でパフォーマンスが向上しました (GH 56345)MultiIndexでインデックス付けする場合のDataFrame.loc()およびSeries.loc()でパフォーマンスが向上しました (GH 56062)MultiIndexでインデックス付けされている場合のDataFrame.sort_index()およびSeries.sort_index()でパフォーマンスが向上しました (GH 54835)DataFrame を辞書に変換する際の
DataFrame.to_dict()でパフォーマンスが向上しました (GH 50990)Index.difference()でパフォーマンスが向上しました (GH 55108)インデックスが既にソートされている場合の
Index.sort_values()でパフォーマンスが向上しました (GH 56128)methodがNoneではない場合のMultiIndex.get_indexer()でパフォーマンスが向上しました (GH 55839)pyarrow dtypes の場合の
Series.duplicated()でパフォーマンスが向上しました (GH 55255)dtype が
"string[pyarrow]"または"string[pyarrow_numpy]"の場合のSeries.str.get_dummies()でパフォーマンスが向上しました (GH 56110)Series.str()メソッドでパフォーマンスが向上しました (GH 55736)マスクされた dtypes の場合の
Series.value_counts()およびSeries.mode()でパフォーマンスが向上しました (GH 54984, GH 55340)DataFrameGroupBy.nunique()およびSeriesGroupBy.nunique()でパフォーマンスが向上しました (GH 55972)SeriesGroupBy.idxmax()、SeriesGroupBy.idxmin()、DataFrameGroupBy.idxmax()、DataFrameGroupBy.idxmin()でパフォーマンスが向上しました (GH 54234)NULL 許容拡張配列をハッシュする際のパフォーマンスが向上しました (GH 56507)
非一意なインデックスにインデックス付けする際のパフォーマンスが向上しました (GH 55816)
4 つ以上のキーでインデックス付けする際のパフォーマンスが向上しました (GH 54550)
時間を UTC にローカライズする際のパフォーマンスが向上しました (GH 55241)
バグ修正#
カテゴリカル#
重複する
Interval値を含むカテゴリカルデータでCategorical.isin()がInvalidIndexErrorを発生させるバグ (GH 34974)混合型の順序なしカテゴリカルデータに対して
CategoricalDtype.__eq__()がFalseを返すバグ (GH 55468)pa.DictionaryArrayをカテゴリとして使用してpa.dictionaryをCategoricalDtypeにキャストする際のバグ (GH 56672)
日付時刻ライク#
DatetimeIndexの構築で、tzとdayfirstまたはyearfirstの両方を渡すと dayfirst/yearfirst が無視されるバグ (GH 55813)DatetimeIndexで、float オブジェクトのオブジェクト dtype ndarray とtzを渡すと、結果が誤ってローカライズされるバグ (GH 55780)Series.isin()で、DatetimeTZDtypedtype と比較値がすべてNaTの場合に、シリーズにNaTエントリが含まれていても、誤ってすべてFalseを返すバグ (GH 56427)concat()で、すべての NA DataFrame をDatetimeTZDtypedtype DataFrame と連結するとAttributeErrorが発生するバグ (GH 52093)testing.assert_extension_array_equal()で、解像度を比較する際に間違った単位を使用する可能性があるバグ (GH 55730)to_datetime()およびDatetimeIndexで、混合文字列型と数値型のリストを渡すと誤って例外が発生するバグ (GH 55780)to_datetime()およびDatetimeIndexで、タイムゾーンの混合またはタイムゾーン認識の混合を持つ混合型オブジェクトを渡すとValueErrorが発生しないバグ (GH 55693)非常に大きなティックを持つ
Tick.delta()がOutOfBoundsTimedeltaではなくOverflowErrorを発生させるバグ (GH 55503)ナノ秒以外の解像度を持つ
DatetimeIndex.shift()が、誤ってナノ秒解像度で返すバグ (GH 56117)DatetimeIndex.union()が、同じタイムゾーンだが異なる単位を持つ tz-aware インデックスに対してオブジェクト dtype を返すバグ (GH 55238)Index.is_monotonic_increasing()およびIndex.is_monotonic_decreasing()が、インデックスの最初の値がNaTの場合にIndex.is_unique()を常にTrueとしてキャッシュするバグ (GH 55755)Index.view()で、サポートされていない解像度を持つ datetime64 dtype にビューイングすると誤って例外が発生するバグ (GH 55710)Series.dt.round()で、ナノ秒以外の解像度とNaTエントリを持つ場合に、誤ってOverflowErrorが発生するバグ (GH 56158)Series.fillna()で、ナノ秒以外の解像度 dtype と高解像度のベクトル値を持つ場合に、誤った (内部的に破損した) 結果が返されるバグ (GH 56410)ISO8601 形式の分または時間解像度とタイムゾーンオフセットを持つ文字列から
Timestamp.unit()が誤って推論されるバグ (GH 56208).astypeで高解像度のdatetime64dtype から低解像度のdatetime64dtype (例:datetime64[us]->datetime64[ms]) に変換する際に、下限実装値付近の値でサイレントにオーバーフローするバグ (GH 55979)ナノ秒以外の解像度を持つ
datetime64Series、Index、またはDataFrame列にWeekオフセットを加算または減算すると、誤った結果が返されるバグ (GH 55583)ナノ秒以外の
Index、Series、またはDataFrame列にoffset属性を持つBusinessDayオフセットを加算または減算すると、誤った結果が返されるバグ (GH 55608)マイクロ秒コンポーネントを持つ
DateOffsetオブジェクトを、ナノ秒以外の解像度を持つdatetime64Index、Series、またはDataFrame列に加算または減算する際のバグ (GH 55595)非常に大きな
TickオブジェクトをTimestampまたはTimedeltaオブジェクトに加算または減算するとOutOfBoundsTimedeltaではなくOverflowErrorが発生するバグ (GH 55503)ナノ秒以外の
DatetimeTZDtypeと、ナノ秒解像度では範囲外となる入力値を使用してIndex、Series、またはDataFrameを作成すると、誤ってOutOfBoundsDatetimeが発生するバグ (GH 54620)ナノ秒以外の
datetime64(またはDatetimeTZDtype) を持つIndex、Series、またはDataFrameを、混合数値入力から作成する際に、それらを dtype の単位の倍数としてではなく (混合されていない数値入力の場合に発生する) ナノ秒として扱うバグ (GH 56004)ナノ秒以外の
datetime64dtype と、datetime64[ns]では範囲外となる入力値を使用してIndex、Series、またはDataFrameを作成すると、誤ってOutOfBoundsDatetimeが発生するバグ (GH 55756)ナノ秒解像度で非 ISO8601 形式の datetime 文字列を解析すると、マイクロ秒未満のコンポーネントが誤って切り捨てられるバグ (GH 56051)
秒未満の解像度と末尾のゼロを持つ datetime 文字列を解析すると、秒またはミリ秒の解像度が誤って推論されるバグ (GH 55737)
unitがTimestampのポイントごとの結果と一致しない浮動小数点 dtype 引数を持つto_datetime()の結果におけるバグ (GH 56037)異なる解像度を持つ
datetime64列を連結する際にconcat()がエラーを発生させる回帰バグを修正 (GH 53641)
Timedelta#
Timedelta構築でOutOfBoundsTimedeltaではなくOverflowErrorを発生させるバグ (GH 55503)ナノ秒以外の解像度を持つ timedelta64 値と、すべて 24 時間の倍数であるエントリを持つ
TimedeltaIndexおよびSeriesのレンダリング (__repr__) で、ナノ秒の場合に使用されるコンパクトな表現を使用できないバグ (GH 55405)
タイムゾーン#
AbstractHolidayCalendarで、祝日を計算する際にタイムゾーンデータが伝播されないバグ (GH 54580)Timestamp構築で、曖昧な値とpytzタイムゾーンを使用するとpytz.AmbiguousTimeErrorが発生しないバグ (GH 55657)Timestamp.tz_localize()で、DST 中の UTC+0 付近でnonexistent="shift_forwardを使用する際のバグ (GH 51501)
数値#
read_csv()でengine="pyarrow"を使用すると、大きな整数で丸め誤差が発生するバグ (GH 52505)Series.__floordiv__()およびSeries.__truediv__()で、積分 dtype を持つArrowDtypeに対して大きな除数で例外が発生するバグ (GH 56706)Series.__floordiv__()で、積分 dtype を持つArrowDtypeに対して大きな値で例外が発生するバグ (GH 56645)Series.pow()が欠損値を正しく埋めないバグ (GH 55512)Series.replace()およびDataFrame.replace()が float0.0とFalseを相互に一致させるバグ (GH 55398)Series.round()が NULL 許容ブール dtype に対して例外を発生させるバグ (GH 55936)
変換#
DataFrame.astype()で、unpickled 配列に対してstrを指定して呼び出すと、配列がインプレースで変更される可能性があるバグ (GH 54654)DataFrame.astype()で、errors="ignore"が拡張型に対して効果がなかったバグ (GH 54654)Series.convert_dtypes()が、すべての NA 列をnull[pyarrow]に変換しないバグ (GH 55346):meth:
DataFrame.locが、異なる dtype のSeriesを全列セッターを使用して割り当てる際に「互換性のない dtype 警告」 (詳細は PDEP6 参照) をスローしなかったバグ (例:df.loc[:, 'a'] = incompatible_value) (GH 39584)
文字列#
pandas.api.types.is_string_dtype()で、要素のないオブジェクト配列が文字列 dtype であるかどうかをチェックする際のバグ (GH 54661)DataFrame.apply()で、engine="numba"で列またはインデックスにStringDtypeがある場合に失敗するバグ (GH 56189)DataFrame.reindex()がstring[pyarrow_numpy]dtype のIndexと一致しないバグ (GH 56106)Index.str.cat()が常に結果をオブジェクト dtype にキャストするバグ (GH 56157)Series.__mul__()で、pyarrow.stringdtype のArrowDtypeおよび pyarrow バックエンドのstring[pyarrow]に対するバグ (GH 51970)Series.str.find()で、pyarrow.stringを持つArrowDtypeに対してstart < 0の場合に発生するバグ (GH 56411)Series.str.fullmatch()で、dtype=pandas.ArrowDtype(pyarrow.string()))が正規表現がリテラル //$ で終わる場合に部分一致を許容するバグ (GH 56652)Series.str.replace()で、pyarrow.stringを持つArrowDtypeに対してn < 0の場合に発生するバグ (GH 56404)Series.str.startswith()およびSeries.str.endswith()で、pyarrow.stringdtype を持つArrowDtypeに対してtuple[str, ...]型の引数を使用する場合のバグ (GH 56579)Series.str.startswith()およびSeries.str.endswith()で、string[pyarrow]に対してtuple[str, ...]型の引数を使用する場合のバグ (GH 54942)dtype="string[pyarrow_numpy]"の比較演算で、dtype が比較できない場合に例外を発生させるバグ (GH 56008)
Interval#
Intervalの__repr__が、Timestampの境界に対する UTC オフセットを表示しないバグ。さらに、時、分、秒のコンポーネントも表示されるようになりました (GH 55015)IntervalIndex.factorize()およびSeries.factorize()で、datetime64 または timedelta64 間隔を持つIntervalDtypeがナノ秒以外の単位を保持しないバグ (GH 56099)IntervalIndex.from_arrays()に、解像度が一致しないdatetime64またはtimedelta64配列を渡すと、無効なIntervalArrayオブジェクトが構築されるバグ (GH 55714)IntervalIndex.from_tuples()で、サブタイプが NULL 許容拡張 dtype の場合に例外が発生するバグ (GH 56765)IntervalIndex.get_indexer()で、datetime または timedelta 間隔が整数ターゲットと誤って一致するバグ (GH 47772)IntervalIndex.get_indexer()で、タイムゾーン対応 datetime 間隔がタイムゾーン非対応ターゲットのシーケンスと誤って一致するバグ (GH 47772)IntervalIndexを持つSeriesにスライスを使用して値を設定すると、誤って例外が発生するバグ (GH 54722)
インデックス付け#
DataFrame.loc()で、DataFrameがMultiIndexを持つ場合にブールインデクサを変異させるバグ (GH 56635)DataFrame.loc()で、拡張 dtype を持つSeriesを NumPy dtype に設定する際のバグ (GH 55604)Index.difference()が、otherが空であるかotherが比較不可能と見なされる場合に、一意な値のセットを返さないバグ (GH 55113)Categorical値を numpy dtypes を持つDataFrameに設定するとRecursionErrorが発生するバグ (GH 52927)単一の文字列値を設定する際に欠損値を持つ新しい列を作成するバグを修正 (GH 56204)
欠損値#
DataFrame.update()で、tz-aware datetime64 dtypes の場合にインプレースで更新されなかったバグ (GH 56227)
MultiIndex#
MultiIndex.get_indexer()で、methodが提供され、インデックスが非単調である場合にValueErrorが発生しないバグ (GH 53452)
I/O#
read_csv()で、engine="python"がskiprowsが指定された場合にchunksize引数を尊重しなかったバグ (GH 56323)read_csv()で、engine="python"が呼び出し可能なskiprowsとチャンクサイズが指定された場合にTypeErrorを引き起こすバグ (GH 55677)read_csv()で、on_bad_lines="warn"が Python 警告を発生させる代わりにstderrに書き込んでいたバグ。これは現在errors.ParserWarningを生成します (GH 54296)read_csv()でengine="pyarrow"を使用するとquotecharが無視されるバグ (GH 52266)read_csv()でengine="pyarrow"を使用すると、ヘッダーのない CSV でusecolsが機能しなかったバグ (GH 54459)read_excel()で、engine="xlrd"(xlsファイル) を使用すると、ファイルにNaNまたはInfが含まれている場合にエラーが発生するバグ (GH 54564)read_json()で、infer_stringが設定されている場合に dtype 変換を適切に処理しないバグ (GH 56195)DataFrame.to_excel()で、OdsWriter(odsファイル) がブール値/文字列値を書き込むバグ (GH 54994)DataFrame.to_hdf()およびread_hdf()で、ナノ秒以外の解像度を持つdatetime64dtypes が正しくラウンドトリップしないバグ (GH 55622)DataFrame.to_stata()が拡張 dtypes に対して例外を発生させるバグ (GH 54671)read_excel()でengine="odf"(odsファイル) を使用すると、文字列セルにアノテーションが含まれている場合に発生するバグ (GH 55200)read_excel()で、浮動小数点値のキャッシュされた書式付きセルがない ODS ファイルを使用するバグ (GH 55219)DataFrame.to_json()がサポートされていない NumPy 型でTypeErrorではなくOverflowErrorを発生させるバグ (GH 55403)
期間#
PeriodIndex構築で、data、ordinal、および**fieldsのうち 2 つ以上が渡された場合にValueErrorが発生しないバグ (GH 55961)Periodの加算で、OverflowErrorを発生させる代わりにサイレントにラップアラウンドするバグ (GH 55503)astypeを使用してPeriodDtypeからナノ秒以外の単位を持つdatetime64またはDatetimeTZDtypeにキャストする際に、誤ってナノ秒単位で返されるバグ (GH 55958)
プロット#
DataFrame.plot.box()で、vert=Falseとsharey=Trueで作成された MatplotlibAxesを使用する際のバグ (GH 54941)DataFrame.plot.scatter()が文字列列を破棄するバグ (GH 56142)Series.plot()で、axオブジェクトを再利用する際にhowキーワードが渡された場合に例外を発生させないバグ (GH 55953)
Groupby/resample/rolling#
DataFrameGroupBy.idxmin()、DataFrameGroupBy.idxmax()、SeriesGroupBy.idxmin()、およびSeriesGroupBy.idxmax()が、インデックスが NA 値を含むCategoricalIndexである場合にCategoricaldtype を保持しないバグ (GH 54234)DataFrameGroupBy.transform()およびSeriesGroupBy.transform()で、observed=Falseおよびf="idxmin"またはf="idxmax"の場合に、未観測カテゴリで誤って例外が発生するバグ (GH 54234)DataFrameGroupBy.value_counts()およびSeriesGroupBy.value_counts()で、DataFrame の列または Series の名前が整数の場合に、誤ったソート結果になる可能性があるバグ (GH 55951)DataFrameGroupBy.value_counts()およびSeriesGroupBy.value_counts()が、DataFrame.groupby()およびSeries.groupby()でsort=Falseを尊重しないバグ (GH 55951)DataFrameGroupBy.value_counts()およびSeriesGroupBy.value_counts()で、sort=Trueおよびnormalize=Trueの場合に、頻度ではなく割合でソートされるバグ (GH 55951)DataFrame.asfreq()およびSeries.asfreq()で、ナノ秒以外の解像度を持つDatetimeIndexが誤ってナノ秒解像度に変換されるバグ (GH 55958)DataFrame.ewm()で、ナノ秒以外のdatetime64またはDatetimeTZDtypedtype を持つtimesが渡された場合のバグ (GH 56262)DataFrame.groupby()およびSeries.groupby()で、Decimalと NA 値の組み合わせでグループ化すると、sort=Trueの場合に失敗するバグ (GH 54847)DataFrame.groupby()で、DataFrame サブクラスが関数を適用する列のサブセットを選択した場合のバグ (GH 56761)DataFrame.resample()がBusinessDayのclosedおよびlabel引数を尊重しないバグ (GH 55282)DataFrame.resample()で、pyarrow.timestampまたはpyarrow.duration型のArrowDtypeでリサンプリングする際のバグ (GH 55989)DataFrame.resample()で、BusinessDayのビンエッジが正しくなかったバグ (GH 55281)DataFrame.resample()で、MonthBeginのビンエッジが正しくなかったバグ (GH 55271)DataFrame.rolling()およびSeries.rolling()で、closed='left'およびclosed='neither'の場合に、重複する datetimelike インデックスが等しいと見なされずに連続していると見なされるバグ (GH 20712)DataFrame.rolling()およびSeries.rolling()において、indexまたはon列がpyarrow.timestamp型のArrowDtypeである場合にバグが発生 (GH 55849)
再整形#
concat()がDatetimeIndexインデックスを渡されたときにsortパラメータを無視するバグ (GH 54769)concat()がignore_index=Falseの場合にSeriesの名前を変更するバグ (GH 15047)merge_asof()がbyの dtype がobject、int64、またはuint64でない場合にTypeErrorを発生させるバグ (GH 22794)merge_asof()が文字列 dtype に対して誤ったエラーを発生させるバグ (GH 56444)merge_asof()がArrowDtype列でTimedelta許容値を使用する際に発生するバグ (GH 56486)merge()が datetime 列と timedelta 列をマージする際にエラーを発生させないバグ (GH 56455)DataFrame.melt()において、var_nameが文字列でない場合に例外が発生するバグ (GH 55948)DataFrame.melt()が datetime を保持しないバグ (GH 55254)DataFrame.pivot_table()において、列に数値の名前がある場合に、行マージンが不正になるバグ (GH 26568)DataFrame.pivot()が数値列と拡張 dtype データを使用する際に発生するバグ (GH 56528)DataFrame.stack()がfuture_stack=Trueの場合に、インデックスの NA 値を保持しないバグ (GH 56573)
スパース#
arrays.SparseArray.take()が配列の埋め込み値とは異なる埋め込み値を使用する際に発生するバグ (GH 55181)
その他#
DataFrame.__dataframe__()が pyarrow large strings をサポートしていないバグ (GH 56702)DataFrame.describe()において、結果のパーセンタイルをフォーマットする際に、99.999% のパーセンタイルが 100% に丸められるバグ (GH 55765)api.interchange.from_dataframe()が空の文字列列を処理する際にNotImplementedErrorを発生させるバグ (GH 56703)cut()およびqcut()が、非ナノ秒単位のdatetime64dtype 値を持つ場合に、誤ってナノ秒単位のビンを返すバグ (GH 56101)cut()が、タイムゾーン対応の datetime をタイムゾーン非対応のビンで誤ってカットすることを許可するバグ (GH 54964)infer_freq()およびDatetimeIndex.inferred_freq()が、週次頻度と非ナノ秒分解能を使用する際に発生するバグ (GH 55609)DataFrame.apply()において、raw=Trueを渡すと、適用された関数に渡されたargsが無視されるバグ (GH 55009)DataFrame.from_dict()が、作成されたDataFrameの行を常にソートするバグ。 (GH 55683)DataFrame.sort_index()がaxis="columns"とignore_index=Trueを渡すときにValueErrorを発生させるバグ (GH 56478)use_inf_as_naオプションが有効な場合に、DataFrame内のinf値のレンダリングに関するバグ (GH 55483)Seriesをレンダリングする際に、MultiIndexのインデックスレベルのいずれかの名前が 0 であり、その名前が表示されないバグ (GH 55415)時間のような文字列が
pyarrow.time64型のArrowDtypeにキャストされる際のバグ (GH 56463)core.window.Rolling.applyでengine="numba"を使用して numpy ufunc を渡すときにnumba>= 0.58.0 からの誤った非推奨警告を修正 (GH 55247)
貢献者#
このリリースには合計162人がパッチを貢献しました。「+」が付いている人は初めてパッチを貢献しました。
AG
Aaron Rahman +
Abdullah Ihsan Secer +
Abhijit Deo +
Adrian D’Alessandro
Ahmad Mustafa Anis +
Amanda Bizzinotto
Amith KK +
Aniket Patil +
Antonio Fonseca +
Artur Barseghyan
Ben Greiner
Bill Blum +
Boyd Kane
Damian Kula
Dan King +
Daniel Weindl +
Daniele Nicolodi
David Poznik
David Toneian +
Dea María Léon
Deepak George +
Dmitriy +
Dominique Garmier +
Donald Thevalingam +
Doug Davis +
Dukastlik +
Elahe Sharifi +
Eric Han +
ファンチェン・リー
Francisco Alfaro +
Gadea Autric +
Guillaume Lemaitre
Hadi Abdi Khojasteh
Hedeer El Showk +
Huanghz2001 +
アイザック・ヴィルシュプ
Issam +
Itay Azolay +
Itayazolay +
Jaca +
Jack McIvor +
JackCollins91 +
James Spencer +
Jay
Jessica Greene
Jirka Borovec +
JohannaTrost +
John C +
Joris Van den Bossche
José Lucas Mayer +
José Lucas Silva Mayer +
João Andrade +
Kai Mühlbauer
Katharina Tielking, MD +
Kazuto Haruguchi +
Kevin
Lawrence Mitchell
Linus +
Linus Sommer +
Louis-Émile Robitaille +
Luke Manley
Lumberbot (aka Jack)
Maggie Liu +
MainHanzo +
Marc Garcia
Marco Edward Gorelli
MarcoGorelli
Martin Šícho +
Mateusz Sokół
Matheus Felipe +
Matthew Roeschke
Matthias Bussonnier
Maxwell Bileschi +
Michael Tiemann
Michał Górny
Molly Bowers +
Moritz Schubert +
NNLNR +
Natalia Mokeeva
Nils Müller-Wendt +
Omar Elbaz
Pandas Development Team
Paras Gupta +
Parthi
Patrick Hoefler
Paul Pellissier +
Paul Uhlenbruck +
Philip Meier
Philippe THOMY +
Quang Nguyễn
Raghav
Rajat Subhra Mukherjee
Ralf Gommers
Randolf Scholz +
Richard Shadrach
Rob +
Rohan Jain +
Ryan Gibson +
Sai-Suraj-27 +
Samuel Oranyeli +
Sara Bonati +
Sebastian Berg
Sergey Zakharov +
Shyamala Venkatakrishnan +
StEmGeo +
ステファニー・モリン
Stijn de Gooijer +
Thiago Gariani +
トーマス・A・キャスウェル
Thomas Baumann +
Thomas Guillet +
Thomas Lazarus +
Thomas Li
Tim Hoffmann
Tim Swast
Tom Augspurger
Toro +
トルステン・ヴェルトワイン
Ville Aikas +
Vinita Parasrampuria +
Vyas Ramasubramani +
ウィリアム・アンドレア
ウィリアム・エイド
Willian Wang +
Xiao Yuan
Yao Xiao
Yves Delley
Zemux1613 +
Ziad Kermadi +
aaron-robeson-8451 +
aram-cinnamon +
caneff +
ccccjone +
chris-caballero +
cobalt
color455nm +
denisrei +
dependabot[bot]
jbrockmendel
jfadia +
johanna.trost +
kgmuzungu +
mecopur +
mhb143 +
morotti +
mvirts +
omar-elbaz
paulreece
pre-commit-ci[bot]
raj-thapa
レベッカ-パーマー
rmhowe425
rohanjain101
shiersansi +
smij720
srkds +
taytzehao
torext
vboxuser +
xzmeng +
yashb +