在另一列中计算唯一身份时保持最新日期

时间:2014-06-26 20:33:49

标签: python pandas dataframe

我有以下数据框:

             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

达到预期结果的最佳方法是什么?

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