考虑这个数据框:
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
,计算它出现的不同日期
的数量,并将结果放入一个新的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()
最佳答案
将 groupby
与 SeriesGroupBy.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
关于python - 计算 Pandas 中每个 id 的不同日期出现次数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41313251/