python dataframe列中每个条目的最新x行

python dataframe列中每个条目的最新x行,python,pandas,dataframe,Python,Pandas,Dataframe,需要选择每个客户最新购买的x 是否有一种性能良好的方法为每个客户端选择最新的x行?假设我们有一个如下所示的数据帧: df1 = Client Product ID A 1 330 B 1 15 A 5 329 A 3 328 A 2 327 B 6 14 A 7 326 A 7 325 C 9 20

需要选择每个客户最新购买的x

是否有一种性能良好的方法为每个客户端选择最新的x行?假设我们有一个如下所示的数据帧:

df1 = 
Client Product ID
A      1       330
B      1       15
A      5       329
A      3       328
A      2       327
B      6       14
A      7       326
A      7       325
C      9       205
C      3       204
C      2       203
C      1       202
C      1       201
B      2       13
B      2       12
B      2       11
df2=
Client Product ID
A      1       330
A      5       329
B      1       15
B      6       14
C      9       205
C      3       204
WARE ID只是一个增量ID(意味着该ID为您提供了客户购买的编号),我们希望为每个客户选择最后两次购买,以便输出如下所示:

df1 = 
Client Product ID
A      1       330
B      1       15
A      5       329
A      3       328
A      2       327
B      6       14
A      7       326
A      7       325
C      9       205
C      3       204
C      2       203
C      1       202
C      1       201
B      2       13
B      2       12
B      2       11
df2=
Client Product ID
A      1       330
A      5       329
B      1       15
B      6       14
C      9       205
C      3       204

是否可以在不循环数据帧的情况下执行此操作?

ID
降序对数据帧进行排序,按
Client
分组,并“选择”每组的前2行

df1.sort_values('ID', ascending=False).groupby('Client').head(2)

Client  Product   ID
     A        1  330
     A        5  329
     C        9  205
     C        3  204
     B        1   15
     B        6   14

非常好用,非常感谢。也许你可以帮我回答另一个问题:现在我有了最新的x值,可能有一个客户的条目少于x,在这种情况下,是否可以用产品的指定值填充数据?明确地说客户机D的最大ID是1,而我仍然在寻找最新的2行。是否可以添加一行,其中显示Client='Client C'和Product='500'(ID不重要)