我有以下数据框:
date name
0 20/06/2014 Allan Watt
1 20/06/2014 Cindy Mark
2 20/06/2014 Luisa Mostert
3 19/06/2014 Allan Watt
我想最终得到以下数据框,它计算'name'中的唯一值并使用最新的日期值。例如:
latest_date name count
0 20/06/2014 Allan Watt 2
1 20/06/2014 Cindy Mark 1
2 20/06/2014 Luisa Mostert 1
目前,我通过执行以下操作添加“计数”列:
df = pd.DataFrame({'count': df.groupby(['name']).size()}).reset_index()
name count
0 Allan Watt 2
1 Cindy Mark 1
2 Luisa Mostert 1
但是这会完全关闭日期列。鉴于:
df = pd.DataFrame({'count': df.groupby(['name', 'date']).size()}).reset_index()
显然,按日期划分的小组也留给我:
latest_date name count
0 20/06/2014 Allan Watt 1
1 20/06/2014 Cindy Mark 1
2 20/06/2014 Luisa Mostert 1
3 19/06/2014 Allan Watt 1
达到预期结果的最佳方法是什么?
答案 0 :(得分:2)
您可以执行以下操作:
df['count'] = 1
df = df.groupby('name').agg({'count':sum, 'date':max})
df = df.rename(columns={'date':'latest_date'})
df = df.reset_index()
print df
name count latest_date
0 Allan Watt 2 20/06/2014
1 Cindy Mark 1 20/06/2014
2 Luisa Mostert 1 20/06/2014