プログラミングの目的で、結果のデータフレームに1行しかない場合でも、.iloc
が一貫してデータフレームを返すようにします。これを達成する方法は?
現在、.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
自体の一貫性を失わせます
Rユーザーの場合、これはdrop = FALSE
を使用するか、デフォルトで常にデータフレームを返すtidyverseのtibbleを使用して実行できます。
二重括弧を使用し、
df.iloc[[0]]
出力:
a b
0 1 3
print(type(df.iloc[[0]])
<class 'pandas.core.frame.DataFrame'>
df.iloc[[0],:]
の略
行インデックスのスライスを指定します。
df.iloc[0:1]
単一行のデータフレームを返します。
a b
0 1 3