【问题标题】:How to resample and apply function with custom counting如何使用自定义计数重新采样和应用函数
【发布时间】:2019-04-08 23:13:15
【问题描述】:

我是数据框架的新手,正在努力弄清楚如何完成以下任务:

我已经有一个像这样的时间序列的数据框:

timestamp             uuid    source                        
2017-06-18 10:43:54   abc      two
2017-06-18 03:38:23   fgh      three
2017-06-18 07:37:02   abc      two
2017-06-18 16:49:51   fgh      one
2017-06-19 21:34:10   abc      two
2017-06-19 16:49:51   knn      three
2017-06-19 22:36:10   mug      one

我正在尝试 1) 重新采样到每天 2) 找出哪些唯一用户在给定的一天拥有多个来源并计算这些用户的数量

在 18 日 fgh 有两个唯一来源 (1),而 abc 只有一个来源 (0),所以当天计数为 1。

19 日没有用户拥有多个来源,因此当天的计数为 0。

结果

timestamp   multi_source_users                  
2017-06-18       1
2017-06-19       0 

我已经尝试了 resample 和 groupby 的几种组合,但我一直卡在总数上。

我从一些天真的事情开始......

df.resample('D').count()

或者

df.groupby('uuid').count()

但我不知道如何从那里构建。当我必须开始复合方法时,我总是卡住。

我也知道您可以“应用”自定义函数,但也无法完成这项工作。

谁能帮我指出正确的方向?再加上对未来思考此类问题的建议?非常感谢。

【问题讨论】:

    标签: python pandas dataframe time-series


    【解决方案1】:

    使用groupbypd.Grouper(freq=...) 尝试以下操作。

    (df.groupby([pd.Grouper(freq='1D'), 'uuid']).nunique() - 1)['source'].groupby(level=0).sum()
    

    输出:

    timestamp
    2017-06-18    1
    2017-06-19    0
    Freq: D, Name: source, dtype: int64
    

    【讨论】:

      猜你喜欢
      • 2021-10-10
      • 1970-01-01
      • 1970-01-01
      • 2016-10-19
      • 1970-01-01
      • 1970-01-01
      • 2022-01-04
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多