私は、約30の列で構成された1,000万を超える生データを持つデータフレームを持っています。pandasデータフレームのデータセットをサブセット化する方法は?
最初の列は、私は、各IDの最初の4行を抽出したいID
ID C
1 1
1 2
1 3
1 2
1 3
2 1
2 5
2 9
2 0
2 1
(それはすでにソートされているとして、彼らは、最新の入力です)
である私は現在使用しています残念ながら、残念ながらデータの約5%を処理するのに約2時間かかり、データ全体を処理するには1日程度かかります。
df1 = pd.DataFrame() # an empty dataframe
for i in df.ID: # df is the dataframe which contains the data
df2 = df[df["ID"]== i]
df2 = df2[0:4] # take the first four rows
df_f = df1.append(df2)
短時間で同じことをする効果的な方法がありますか?
df.groupby("ID").head(4)
ここgroupby().head()
法に対する実行時間のテストを使用して元のコードの改訂版である:あなたがhead()
方法が必要
はそれがそこに保証されています各IDのインスタンスが少なくとも4つありますか? – kiliantics
はいほとんどのIDには10以上のインスタンスがあり、過去4か月間のインスタンスのみを取得したいので、インスタンスは各IDの降順でソートされています。 –