使用python 3尝试对列'Name‘中的每个uniqe行从'Number’获取最后5个记录。如何在python中做到这一点呢?我的df看起来如下:
Name Number
a 5
a 6
b 7
b 8
a 9
a 10
b 11
b 12
a 9
b 8我在SQL中看到了相同的实例(比如这个Get sum of last 5 rows for each unique id ),但是这很费时,我想学习如何在python中完成它。
我的预期输出df如下所示:
Name 1 2 3 4 5
a 5 6 9 10 9
b 7 8 11 12 8发布于 2019-06-27 12:49:14
我想你需要这样的东西:
df_out = df.groupby('Name').tail(5)
df_out.set_index(['Name', df_out.groupby('Name').cumcount() +1])['Number'].unstack()输出:
1 2 3 4 5
Name
a 5 6 9 10 9
b 7 8 11 12 8发布于 2019-06-27 12:43:49
看起来你需要pivot在groupby.cumcount()之后
df1=df.groupby('Name').tail(5)
final=(df1.assign(k=df1.groupby('Name').cumcount()+1)
.pivot(index='Name', columns='k', values='Number')
.reset_index().rename_axis(None, axis=1))
print(final) Name 1 2 3 4 5
0 a 5 6 9 10 9
1 b 7 8 11 12 8https://stackoverflow.com/questions/56791128
复制相似问题