【发布时间】:2018-05-18 14:10:48
【问题描述】:
我需要从最旧的日期开始按日期对表格进行排序。通过将 name 和 kind 字段分组并应用总和来创建总计字段。现在,对于每一行,我需要计算同一 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
...
我的问题是,当DataFrame 按name 和kind 分组时,如何计算剩余值?
我最初的方法是移动列并将持续时间的值彼此相加:
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