Date Pandas-确定数据帧中每个帐户的最大日期

Date Pandas-确定数据帧中每个帐户的最大日期,date,pandas,dataframe,max,Date,Pandas,Dataframe,Max,我有一个示例数据帧: df = pd.DataFrame({'Account':['1234', '1234', '4567', '4567'], 'Date':['12/5/2017', '12/5/2017', '12/10/2017', '12/11/2017']}) df.Date = pd.to_datetime(df.Date) df.head() Account Date 0 1234 2017-12-05 1

我有一个示例数据帧:

df = pd.DataFrame({'Account':['1234', '1234', '4567', '4567'],
                   'Date':['12/5/2017', '12/5/2017', '12/10/2017', '12/11/2017']})

df.Date = pd.to_datetime(df.Date)

df.head()

     Account   Date
0    1234     2017-12-05
1    1234     2017-12-05
2    4567     2017-12-10
3    4567     2017-12-11
我想添加一个名为MaxDate的列,其中包含每个帐户的最后日期。最终结果如下:

df = pd.DataFrame({'Account':['1234', '1234', '4567', '4567'],
                   'Date':['12/5/2017', '12/5/2017', '12/10/2017', '12/11/2017'],
                   'MaxDate':['12/5/2017', '12/5/2017', '12/11/2017', '12/11/2017']})

df.Date = pd.to_datetime(df.Date)
df.MaxDate = pd.to_datetime(df.MaxDate)

df.head()

     Account  Date         MaxDate
0    1234     2017-12-05   2017-12-05
1    1234     2017-12-05   2017-12-05
2    4567     2017-12-10   2017-12-11
3    4567     2017-12-11   2017-12-11
我不确定是否应该在数据帧上迭代,还是?请注意,数据集可以是一百万行,因此性能是一个考虑因素。感谢您的指导

In [107]: df['MaxDate'] = df.groupby('Account').Date.transform('max')

In [108]: df
Out[108]:
  Account       Date    MaxDate
0    1234 2017-12-05 2017-12-05
1    1234 2017-12-05 2017-12-05
2    4567 2017-12-10 2017-12-11
3    4567 2017-12-11 2017-12-11
“最后一次”
,取决于您的目标

df['MaxDate'] = df.groupby('Account').Date.transform('last')

因为@MaxU的回答太快了,所以这里有一些选择

df.join(df.groupby('Account').Date.max().rename('MaxDate'), on='Account')

  Account       Date    MaxDate
0    1234 2017-12-05 2017-12-05
1    1234 2017-12-05 2017-12-05
2    4567 2017-12-10 2017-12-11
3    4567 2017-12-11 2017-12-11
或者以另一种方式

df.assign(MaxDate=df.Account.map(df.groupby('Account').Date.max()))

  Account       Date    MaxDate
0    1234 2017-12-05 2017-12-05
1    1234 2017-12-05 2017-12-05
2    4567 2017-12-10 2017-12-11
3    4567 2017-12-11 2017-12-11

你很快。我在一个更大的数据集上尝试了这个方法,效果很好。谢谢,谢谢你的选择。这些会放进我的工具箱。