首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Pandas: Groupby和cut and

Pandas: Groupby和cut and
EN

Stack Overflow用户
提问于 2016-09-07 13:57:32
回答 1查看 1.1K关注 0票数 3

我有一个熊猫数据帧,看起来像这样:

代码语言:javascript
复制
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将如下所示:

代码语言:javascript
复制
userid   name       date
1           name1    2016-06-04
1           name2    2016-06-04
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



userid     int64
name      object
time      object

time列中数据点的type()是一个datetime.date

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

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-09-07 14:14:51

您可以先按列对DataFrame排序datesort_values排序,然后使用apply boolean indexing进行groupby - get所有行,其中是第一个值:

代码语言:javascript
复制
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
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39362151

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档