pandas .iloc に単一行のデータフレームを返すように強制しますか? 質問する

pandas .iloc に単一行のデータフレームを返すように強制しますか? 質問する

プログラミングの目的で、.iloc結果のデータ フレームに行が 1 つしかない場合でも、一貫してデータ フレームを返したいと考えています。これを実現するにはどうすればよいでしょうか。

現在、.iloc結果に 1 行しかない場合は Series を返します。例:

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

In [2]: df
Out[2]:
   a  b
0  1  3
1  2  4

In [3]: type(df.iloc[0, :])
Out[3]: pandas.core.series.Series

この動作は、次の 2 つの理由で不適切です。

  • 選択した行の数に応じて、.ilocシリーズまたはデータフレームを返すことができるため、コード内で手動で確認する必要があります。

- .loc 一方、常にデータフレームを返すため、 pandas それ自体に矛盾が 生じます(コメントで指摘されているように、間違った情報です)

drop = FALSER ユーザーの場合、これは を使用するか、またはデフォルトで常にデータ フレームを返す tidyverse の tibble を使用して実現できます。

ベストアンサー1

二重括弧を使用する。

df.iloc[[0]]

出力:

   a  b
0  1  3

print(type(df.iloc[[0]])

<class 'pandas.core.frame.DataFrame'>

略称df.iloc[[0],:]

おすすめ記事