从一列日期中找出最大(最新)日期,然后按员工分组

时间:2018-06-20 15:50:05

标签: python-2.7 date datetime max

导入数据框

df = pd.read_csv("C:\\Users")

打印员工用户名列表

print (df['AssignedTo'])

返回值:

Out[4]: 0 vaughad 1 channln 2 stalasi 3 mitras 4 martil 5 erict 6 erict 7 channln 8 saia 9 channln 10 roedema 11 vaughad

打印日期

返回值:

Out[6]: 0 2015-11-05 1 2016-05-27 2 2016-04-26 3 2016-02-18 4 2016-02-18 5 2015-11-02 6 2016-01-14 7 2015-12-15 8 2015-12-31 9 2015-10-16 10 2016-01-07 11 2015-11-20

现在我需要收集每位员工的最新日期吗?

我尝试过:

MaxDate = max(df.FilledEnd)

但这只会为所有员工返回一个日期。

因此,我们在数据集中看到多个雇员具有不同的日期,在名为“ LatestDate”的新列中,我需要与该雇员相对应的最新日期,因此对于新列中的“ vaughad”,它将返回“ 2015-11-20”对于所有“ vaughad”记录,并在用户名“ channln”的同一列中,它将为所有“ channln”最新日期返回“ 2016-5-27”。

1 个答案:

答案 0 :(得分:0)

您需要先使用group your data DataFrame.groupby(),之后才能生成汇总值,例如FilledEnd系列中的最大日期:

df.groupby('AssignedTo')['FilledEnd'].max() 

这将产生一个以AssignedTo为索引的序列,并将每个员工的最新日期作为值:

>>> df.groupby('AssignedTo')['FilledEnd'].max()
AssignedTo
channln    2016-05-27
erict      2016-01-14
martil     2016-02-18
mitras     2016-02-18
roedema    2016-01-07
saia       2015-12-31
stalasi    2016-04-26
vaughad    2015-11-20
Name: FilledEnd, dtype: object

如果您想将这些最大日期值添加回数据框中,请改用groupby(...).transform()numpy.max,以便获得具有相同索引的系列:

df['MaxDate'] = df.groupby('AssignedTo')['FilledEnd'].transform(np.max)

这会添加一个MaxDate列:

   AssignedTo   FilledEnd     MaxDate
0     vaughad  2015-11-05  2015-11-20
1     channln  2016-05-27  2016-05-27
2     stalasi  2016-04-26  2016-04-26
3      mitras  2016-02-18  2016-02-18
4      martil  2016-02-18  2016-02-18
5       erict  2015-11-02  2016-01-14
6       erict  2016-01-14  2016-01-14
7     channln  2015-12-15  2016-05-27
8        saia  2015-12-31  2015-12-31
9     channln  2015-10-16  2016-05-27
10    roedema  2016-01-07  2016-01-07
11    vaughad  2015-11-20  2015-11-20