1. ホーム
  2. python

[解決済み] Pandasがラベルで選択すると、Seriesを返す場合とDataFrameを返す場合があります。

2022-05-16 07:48:37

質問

Pandasでは、インデックスに1つのエントリしかないラベルを選択すると、Seriesが返されますが、複数のエントリを持つエントリを選択すると、データフレームが返されます。

なぜでしょうか。 常にデータフレームを得ることを確実にする方法はありますか。

In [1]: import pandas as pd

In [2]: df = pd.DataFrame(data=range(5), index=[1, 2, 3, 3, 3])

In [3]: type(df.loc[3])
Out[3]: pandas.core.frame.DataFrame

In [4]: type(df.loc[1])
Out[4]: pandas.core.series.Series

どのように解決するのですか?

動作に一貫性がないのは認めますが、これが便利なケースは容易に想像がつくと思います。とにかく、毎回DataFrameを取得するためには、単にリストを loc . 他にも方法はありますが、私見ではこれが一番きれいです。

In [2]: type(df.loc[[3]])
Out[2]: pandas.core.frame.DataFrame

In [3]: type(df.loc[[1]])
Out[3]: pandas.core.frame.DataFrame