プログラミングの目的で、.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 = FALSE
R ユーザーの場合、これは を使用するか、またはデフォルトで常にデータ フレームを返す tidyverse の tibble を使用して実現できます。
ベストアンサー1
二重括弧を使用する。
df.iloc[[0]]
出力:
a b
0 1 3
print(type(df.iloc[[0]])
<class 'pandas.core.frame.DataFrame'>
略称df.iloc[[0],:]