我有一个数据框,它由约30列组成,超过1000万行。
第一列是ID。
ID C
1 1
1 2
1 3
1 2
1 3
2 1
2 5
2 9
2 0
2 1
我希望提取每个ID的前四行数据(它们是最新的输入,因为已经排序)。目前我使用下面的代码,但不幸的是它太慢了,处理大约5%的数据需要两个小时左右,处理整个数据可能需要一天左右的时间。请帮忙优化。
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)
有没有一种更有效的方式来在更短的时间内完成同样的事情?