回答:
iloc
整数の位置と通常のpython構文の両方に基づいて、行/列のスライスを取得するを使用します。
df.iloc[::5, :]
df.iloc[::5]
@chrisbの受け入れられた答えは質問に答えますが、それに以下を追加したいと思います。
nth
データを取得したり、nth
行を削除したりするために使用する簡単な方法は次のとおりです。
df1 = df[df.index % 3 != 0] # Excludes every 3rd row starting from 0
df2 = df[df.index % 3 == 0] # Selects every 3rd raw starting from 0
この算術ベースのサンプリングには、さらに複雑な行選択を可能にする機能があります。
もちろん、これは 0から始まる順序付けられた連続した整数のindex
列があることを前提としています。
直接呼び出すことを含む、受け入れられた回答のさらに簡単な解決策がありdf.__getitem__
ます。
df = pd.DataFrame('x', index=range(5), columns=list('abc'))
df
a b c
0 x x x
1 x x x
2 x x x
3 x x x
4 x x x
たとえば、2行ごとに取得するには、次のようにします。
df[::2]
a b c
0 x x x
2 x x x
4 x x x
GroupBy.first
/ もありGroupBy.head
ます。インデックスでグループ化します。
df.index // 2
# Int64Index([0, 0, 1, 1, 2], dtype='int64')
df.groupby(df.index // 2).first()
# Alternatively,
# df.groupby(df.index // 2).head(1)
a b c
0 x x x
1 x x x
2 x x x
インデックスはストライド(この場合は2)でフロア分割されます。インデックスが非数値の場合は、代わりに
# df.groupby(np.arange(len(df)) // 2).first()
df.groupby(pd.RangeIndex(len(df)) // 2).first()
a b c
0 x x x
1 x x x
2 x x x
df.iloc[1::5, :]
。