根据给定的日期记录创建开始日期和结束日期列

宜宾

应该是我的数据集

Name date
A    15-01-01
A    15-01-31
A    16-02-02
A    16-03-04
B    17-04-05
B    17-05-08
B    17-07-09
C    18-01-02
C    18-02-03

我想将每个人的第一个和最后一个日期添加到新列中。

结果我想要的

Name date     startdate enddate
A    15-01-01 15-01-01  16-03-04
A    15-01-31 15-01-01  16-03-04
A    16-02-02 15-01-01  16-03-04
A    16-03-04 15-01-01  16-03-04
B    17-04-05 17-04-05  17-07-09
B    17-05-08 17-04-05  17-07-09
B    17-07-09 17-04-05  17-07-09
C    18-01-02 18-01-02  18-02-03
C    18-02-03 18-01-02  18-02-03

有没有办法使之成为可能?如果您让我知道,我将不胜感激。

谢谢你的阅读

耶斯列尔

GroupBy.transformGroupBy.first或一起使用GroupBy.last并添加到新列中:

g = df.groupby('Name')['date']
df = df.assign(startdate = g.transform('first'), enddate = g.transform('last'))
print (df)
  Name      date startdate   enddate
0    A  15-01-01  15-01-01  16-03-04
1    A  15-01-31  15-01-01  16-03-04
2    A  16-02-02  15-01-01  16-03-04
3    A  16-03-04  15-01-01  16-03-04
4    B  17-04-05  17-04-05  17-07-09
5    B  17-05-08  17-04-05  17-07-09
6    B  17-07-09  17-04-05  17-07-09
7    C  18-01-02  18-01-02  18-02-03
8    C  18-02-03  18-01-02  18-02-03

或者,如果需要使用GroupBy.min和的最小值和最大值GroupBy.max

df['date'] = pd.to_datetime(df['date'], format='%y-%m-%d')
g = df.groupby('Name')['date']
df = df.assign(startdate = g.transform('min'), enddate = g.transform('max'))
print (df)
  Name       date  startdate    enddate
0    A 2015-01-01 2015-01-01 2016-03-04
1    A 2015-01-31 2015-01-01 2016-03-04
2    A 2016-02-02 2015-01-01 2016-03-04
3    A 2016-03-04 2015-01-01 2016-03-04
4    B 2017-04-05 2017-04-05 2017-07-09
5    B 2017-05-08 2017-04-05 2017-07-09
6    B 2017-07-09 2017-04-05 2017-07-09
7    C 2018-01-02 2018-01-02 2018-02-03
8    C 2018-02-03 2018-01-02 2018-02-03

替代与GroupBy.agg具有DataFrame.join

df1 = df.groupby('Name').agg(startdate = ('date','first'), lastdate = ('date','last'))
df = df.join(df1, on='Name')

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

根据开始日期和结束日期在数据框中创建新列

从单个日期列创建开始和结束日期

在给定开始日期和结束日期的情况下,如何创建日期范围

生成属于给定开始日期和结束日期的开始日期、结束日期和周数

检索日期在开始日期和结束日期之间的记录

过滤数据框并根据开始和结束日期创建图

根据SQL中多行的位置创建开始和结束日期

从日期字段创建开始日期和结束日期

按开始日期和结束日期创建日期向量

如何根据给定的开始日期和学期持续时间动态设置结束日期?

根据给定的 R 中的开始日期和结束日期,按月计算员工人数

Excel- VBA:给定开始日期和结束日期,请创建两个日期之间的日期数组

在开始日期和结束日期列之间搜索开始日期和结束日期MySQL,Laravel

熊猫:给定开始和结束日期,制作日期直方图?

给定开始日期和结束日期的月份中的天数

从给定的季度 SQL 计算开始日期和结束日期

给定开始和结束日期的预期付款日期

如何根据开始日期和结束日期多次显示记录,包括天数间隔

根据开始日期和结束日期对记录进行分组,并使用 Rails 计数

如何使用SQL在Teradata中的表中使用开始日期和结束日期创建日期列?

从Snowflake中的开始日期和结束日期列创建日期数组

根据另一个熊猫中开始日期和结束日期列的条件创建新的熊猫数据框

如何根据一天中的任务完成情况从给定的日期列中获取开始日期和结束日期(oracle)

分组列事件以创建事件的开始和结束日期

如何返回开始日期和结束日期之间的记录

SELECT 具有开始日期和结束日期的记录

合并记录以显示开始日期和结束日期SQL

从给定的开始日期获取结束日期基准

根据开始日期和结束日期重复行