【问题标题】:Pandas: Calculate remaining time in grouping熊猫:计算分组剩余时间
【发布时间】:2018-05-18 14:10:48
【问题描述】:

我需要从最旧的日期开始按日期对表格进行排序。通过将 namekind 字段分组并应用总和来创建总计字段。现在,对于每一行,我需要计算同一 name-kind 分组中的剩余时间。

csv 看起来像这样:

date       name kind duration total remaining
1-1-2017   a    1    10       100   ? should be 90
2-1-2017   b    1    5        35    ? should be 30
3-1-2017   a    2    3        50    ? should be 47
4-1-2017   b    2    1        25    ? should be 24
5-1-2017   a    1    8        100   ? should be 82
6-1-2017   b    1    2        35    ? should be 33
7-1-2017   a    2    3        50    ? should be 44
8-1-2017   b    2    6        25    ? should be 18
...

我的问题是,当DataFramenamekind 分组时,如何计算剩余值?

我最初的方法是移动列并将持续时间的值彼此相加:

df['temp'] = df.groupby(['name', 'kind'])['duration'].apply(lambda x: x.shift() + x)

然后:

df['duration'] = df.apply(lambda x: x['total'] - x['temp'], axis=1)

但它没有按预期工作。

有没有一种干净的方法可以做到这一点,或者以某种方式使用iloc, ix, loc 是要走的路?

谢谢。

【问题讨论】:

    标签: python pandas numpy jupyter-notebook


    【解决方案1】:

    你可以这样做:

    df["cumsum"] = df.groupby(['name', 'kind'])["duration"].cumsum()
    df["remaining"] = df["total"] - df["cumsum"]
    

    可能要小心重置索引。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-11-11
      • 2014-07-30
      • 1970-01-01
      相关资源
      最近更新 更多