Pandas:分组和分组

2024-04-20 09:07:45 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个pandas数据帧,如下所示:

userid   name       date
1           name1    2016-06-04
1           name2    2016-06-05
1           name3    2016-06-04
1           name1    2016-06-06
2           name23   2016-06-01
2           name2    2016-06-01
3           name1    2016-06-03
3           name6    2016-06-03
3           name12   2016-06-03
3           name65   2016-06-04

所以,我只想在第一个日期事件之前保留用户行,并删除其余的行。在

最终df如下:

^{pr2}$

时间列中数据点的type()datetime.date

因此,这些任务将涉及grouping with respect to useridsorting according to the date,然后retaining only the rows with first(/earliest) date。在


Tags: theto数据namepandasdatewithuserid
1条回答
网友
1楼 · 发布于 2024-04-20 09:07:45

您可以先按列date^{}DataFrame排序,然后用^{}^{}DataFrame进行排序-获取第一个值所在的所有行:

df = df.sort_values('date')
       .groupby('userid')
       .apply(lambda x: x[x.date == x.date.iloc[0]])
       .reset_index(drop=True)

print (df)
   userid    name       date
0       1   name1 2016-06-04
1       1   name3 2016-06-04
2       2  name23 2016-06-01
3       2   name2 2016-06-01
4       3   name1 2016-06-03
5       3   name6 2016-06-03
6       3  name12 2016-06-03

相关问题 更多 >