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

标签 python pandas 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,计算它出现的不同日期的数量,并将结果放入一个新的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()

最佳答案

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

关于python - 计算 Pandas 中每个 id 的不同日期出现次数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41313251/

相关文章:

python - 用 Python 编写一次性或匿名类?

python - 将 Excel 表导入 pandas 数据框

python (1040, 'Too many connections')

Python groupby 应用返回奇数数据帧

python - Pandas 如何不适用于整列

python - 如何获取 groupby 中的第一个值,TypeError : first() missing 1 required positional argument: 'offset'

python - 使用 Pandas 读取数据并将其设置为 DataFrame 的索引

python - Groupby 并在 Python 的两列中查找相似或相同的项目

python - 将数字应用于字符串的序列生成

python - 前向链表的问题