【问题标题】:How to use Pandas diff() with other columns value as period?如何将 Pandas diff() 与其他列值一起用作句点?
【发布时间】:2022-07-12 21:37:59
【问题描述】:

我有一个如下所示的数据框:

Timestamp description
0 Parser starts
12 parsing
24 parsing
26 Parsing finished
28 Parser starts
45 Parsing finished

我想计算每次解析花费的时间。因此,我想要(df['description'] == 'Parsing finished')(df['description'] == 'Parser starts') 的时间戳之间的差异。我知道我可以使用pd.diff(),但我只能找到如何在设定的时间段内使用它。我想根据描述值设置周期。

预期输出:

Timestamp description difference
0 Parser starts NaN
12 parsing NaN
24 parsing NaN
26 Parsing finished 26
28 Parser starts NaN
45 Parsing finished 19

我曾想过循环遍历每一行,但这在使用 Pandas 时似乎违反直觉。

【问题讨论】:

    标签: python pandas


    【解决方案1】:

    您可以使用groupby

    group = df['description'].eq('Parser starts').cumsum()
    g = df.groupby(group)
    
    df.loc[g.cumcount(ascending=False).eq(0), 'difference'] = g['Timestamp'].transform('sum')
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-07-26
      • 2014-10-09
      • 2020-04-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-06-02
      • 2021-11-16
      相关资源
      最近更新 更多