计算Pandas中每个id的不同日期出现次数

时间:2016-12-24 12:25:45

标签: python pandas dataframe

考虑这个DataFrame:

id     date
837    2016-12-01
837    2016-12-01
840    2016-12-01
840    2016-12-01
840    2016-12-01
837    2016-12-02
837    2016-12-02
837    2016-12-02
841    2016-12-02
841    2016-12-02
837    2016-12-03
837    2016-12-03
841    2016-12-03

计算以下结果的最佳方法是什么:

id     number_of_distinct_dates
837    3
840    1
841    2

说明:对于每个id,计算它出现的不同date的数量,并将结果放入新的DataFrame中。在此处,837出现在3个不同的日期,840仅在一个日期出现,841出现在2个不同的日期。

我尝试使用DataFrame.groupby(),但到目前为止,我能够提出的最接近的是:

id     date
837    2016-12-01    2
       2016-12-02    3
       2016-12-03    2
840    2016-12-01    3
841    2016-12-02    2
       2016-12-02    1

使用df.groupby(['id','date']).size()

1 个答案:

答案 0 :(得分:2)

groupbySeriesGroupBy.nunique一起使用,最后reset_index

print (df.groupby('id')['date'].nunique())
id
837    3
840    1
841    2
Name: date, dtype: int64

print (df.groupby('id',)['date'].nunique().reset_index(name='number_of_distinct_dates'))
    id  number_of_distinct_dates
0  837                         3
1  840                         1
2  841                         2