パンダのデータフレームの場合、最初の5つの値と最後の5つの値の両方を選択するにはどうすればよいですか?例えば
In [11]: df
Out[11]:
A B C
2012-11-29 0 0 0
2012-11-30 1 1 1
2012-12-01 2 2 2
2012-12-02 3 3 3
2012-12-03 4 4 4
2012-12-04 5 5 5
2012-12-05 6 6 6
2012-12-06 7 7 7
2012-12-07 8 8 8
2012-12-08 9 9 9
最初の牽引行と最後の牽引行を表示するにはどうすればよいですか?
print (np.r_[0:2, -2:0])
[ 0 1 -2 -1]
df = df.iloc[np.r_[0:2, -2:0]]
print (df)
A B C
2012-11-29 0 0 0
2012-11-30 1 1 1
2012-12-07 8 8 8
2012-12-08 9 9 9
df = df.iloc[np.r_[0:4, -4:0]]
print (df)
A B C
2012-11-29 0 0 0
2012-11-30 1 1 1
2012-12-01 2 2 2
2012-12-02 3 3 3
2012-12-05 6 6 6
2012-12-06 7 7 7
2012-12-07 8 8 8
2012-12-08 9 9 9
df.head(5)
およびdf.tail(5)
を使用して、最初の5つと最後の5つを取得できます。オプションで、新しいデータフレームとappend()
の頭と尾を作成できます。
new_df = df.tail(5)
new_df = new_df.append(df.head(5))
小さなシンプルな機能:
def ends(df, x=5):
return df.head(x).append(df.tail(x))
そしてそのように使用します:
df = pd.DataFrame(np.random.Rand(15,6))
ends(df,2)
私は実際にこれをとても使います、 パンダに追加するのは素晴らしい機能だと思います。 (pandas.DataFrameコアAPIに追加される機能はありません)インポート後に次のように追加します。
import pandas as pd
def ends(df, x=5):
return df.head(x).append(df.tail(x))
setattr(pd.DataFrame,'ends',ends)
そのように使用してください:
import numpy as np
df = pd.DataFrame(np.random.Rand(15,6))
df.ends(2)
同じ質問ではないかなりしかし、もしあなたが単にshowしたい場合/下5行(たとえば、jupyterのdisplay
または通常のprint
を使用して、 pd.option_context
コンテキストを使用する場合、これよりも簡単な方法があります。
#make 100 3d random numbers
df = pd.DataFrame(np.random.randn(100,3))
# sort them by their axis sum
df = df.loc[df.sum(axis=1).index]
with pd.option_context('display.max_rows',10):
print(df)
出力:
0 1 2
0 -0.649105 -0.413335 0.374872
1 3.390490 0.552708 -1.723864
2 -0.781308 -0.277342 -0.903127
3 0.433665 -1.125215 -0.290228
4 -2.028750 -0.083870 -0.094274
.. ... ... ...
95 0.443618 -1.473138 1.132161
96 -1.370215 -0.196425 -0.528401
97 1.062717 -0.997204 -1.666953
98 1.303512 0.699318 -0.863577
99 -0.109340 -1.330882 -1.455040
[100 rows x 3 columns]
Jupyterでは、@ bolsterの答えを拡張して、再利用可能な便利な関数を作成します。
_def display_n(df,n):
with pd.option_context('display.max_rows',n*2):
display(df)
_
その後
_display_n(df,2)
_
戻り値
_ 0 1 2
0 0.167961 -0.732745 0.952637
1 -0.050742 -0.421239 0.444715
... ... ... ...
98 0.085264 0.982093 -0.509356
99 -0.758963 -0.578267 -0.115865
_
(適切にフォーマットされたHTMLテーブルを除く)
dfがdf = pd.DataFrame(np.random.randn(100,3))
の場合
ノート:
display
をprint
に変更することで、同じものをテキストとして印刷できます。~/.ipython/profile_default/startup
_のpy
またはipy
ファイルに記述して、すべてのノートブックでオートロードできます こちら =。Linas Fxに関連付けられています。
以下の定義
_pd.DataFrame.less = lambda df, n=10: df.head(n//2).append(df.tail(n//2))
_
次に、df.less()
のみを入力できます
タイプdf.head().append(df.tail())
と同じ
df.less(2)
と入力すると、結果はdf.head(1).append(df.tail(1))
と同じになります。
df.head(2)とdf.tail(2)を使用できます