【问题标题】:Sum time difference and pivot it - pandas dataframe总和时间差并旋转它 - 熊猫数据框
【发布时间】:2019-04-07 04:24:22
【问题描述】:

我有一个数据框有两列:unix_time 和 user。它有数千行,这是它的一部分:

unix_time       user
2000000000000   A
2000000000001   A
2000000000002   B
2000000000003   B
2000000000004   B

我想通过以下方式计算每个用户总共花费了多少 unix_time:
1.计算行间时间差。例如:unix_time column (row2 - row1)
2.如果他们来自同一用户,则求和时间差。例如:sum(row2 - row1) and (row3 - row2)

输出将是

time_difference_sum  user
1                    A
2                    B

我阅读了几篇帖子,例如these two,但仍然很难找到解决方案,因为我遇到了更多限制。关于如何做到这一点的任何建议?提前谢谢你!

【问题讨论】:

    标签: python pandas datetime dataframe


    【解决方案1】:

    您可以使用groupby()diff() 然后agg() 您的结果:

    df['time_difference_sum'] = df.sort_values(['user','unix_time']).groupby('user')['unix_time'].diff()
    
    df.groupby('user').agg({'time_difference_sum': 'sum'})
    

    产量:

          time_difference_sum
    user                     
    A                     1.0
    B                     2.0
    

    【讨论】:

    • 谢谢,但当我尝试使用真实数据时出现错误Wrong number of items passed 2, placement implies 1。我想知道是因为在实际数据中,尽管行号晚于用户 A,但用户 B 的 unix_time 可能比用户 A 更小?
    • 原始数据框中的列是否比问题中显示的多?请参阅我的编辑,这可能会解决该问题。
    • 当然谢谢! unix_time user 1417412578004 i2wl1o1n5wsoahi066uf 1417412581732 i2wl1o1n5wsoahi066uf 1417412581733 i2wl1o1n5wsoahi066uf 1417412581733 i2wl1o1n5wsoahi066uf 1417412590099 i2wl1o1n5wsoahi066uf 1417412591780 i2wl1o1n5wsoahi066uf 1417412596325 i2wl1o1n5wsoahi066uf 1417412596326 i2wl1o1n5wsoahi066uf 1417412600171 i2wl1o1n5wsoahi066uf 1417412600171 i2wl1o1n5wsoahi066uf 1417412600172 i2wl1o1n5wsoahi066uf 1417412604687 i2wl1o1n5wsoahi066uf 1417412647448 i2wl1o1n5wsoahi066uf 1417412649678 i2wl1o1n5wsoahi066uf
    猜你喜欢
    • 2013-06-23
    • 1970-01-01
    • 2012-07-23
    • 2020-02-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-21
    • 2021-11-10
    相关资源
    最近更新 更多