2017-08-31 3 views
3

プログラミング目的のために、結果のデータフレームに1行しかない場合でも、.ilocはデータフレームを一貫して返すようにします。これを達成する方法は?pandas .ilocに1行のデータフレームを返すように強制する?

現在、.ilocは結果に1行しかない場合は系列を返します。例:この動作は2つの理由のために悪い

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 

:選択した行の数に応じて

  • .ilocは手動でこれを確認するために私を強制的に、シリーズまたはデータフレームを返すことができますいずれか私のコード

から .locは、他の一方で、常に自分自身の中にポイとして (間違った情報を、pandas矛盾を作り、データフレームを返します

Rユーザーの場合、これはdrop = FALSEで、またはデフォルトで常にデータフレームを返すtidyverseのtibbleを使用して行うことができます。

+0

.loc'は* *常に 'pd.DataFrame'を返さない'、実際に、 'df.loc [0、:]試す'とあなたは同じ動作を取得します。 –

+0

@ juanpa.arrivillagaあなたは正しいです - 私は私のポストから間違った情報を編集します。 – Heisenberg

答えて

3

使用二重括弧、

df.iloc[[0]] 

出力:df.iloc[[0],:]

2

ため

a b 
0 1 3 

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

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

ショート行インデックス用のスライスを指定します。

df.iloc[0:1] 

単一の行のデータフレームを返します。

a b 
0 1 3 
関連する問題