sha*_*var 3 date max dataframe pandas
我有一个示例数据框:
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
Run Code Online (Sandbox Code Playgroud)
我想添加一个名为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
Run Code Online (Sandbox Code Playgroud)
我不确定是否应该在数据帧上迭代还是?请注意,数据集可以是一百万行,因此性能是一个考虑因素。任何指导表示赞赏。
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
Run Code Online (Sandbox Code Playgroud)
或'last'根据您的目标
df['MaxDate'] = df.groupby('Account').Date.transform('last')
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1014 次 |
| 最近记录: |