【发布时间】:2020-07-16 08:44:20
【问题描述】:
我正在尝试根据一个日期时间列按日期对 Pandas 数据框进行分组,并在此基础上根据特定值计算另一列中特定出现的次数。假设我有这个数据框:
df = pd.DataFrame({
"customer": [
"A", "A", "A", "A", "A", "B", "C", "C"
],
"datetime": pd.to_datetime([
"2020-01-01 00:00:00", "2020-01-02 00:00:00", "2020-01-02 01:00:00", "2020-01-03 00:00:00", "2020-01-04 00:00:00", "2020-01-03 00:00:00", "2020-01-03 00:00:00", "2020-01-04 00:00:00"
]),
"enabled": [
True, True, False, True, True, True, False, True
]
})
数据框如下所示:
customer datetime enabled
A 2020-01-01 00:00:00 True
A 2020-01-02 00:00:00 True
A 2020-01-02 01:00:00 False
A 2020-01-03 00:00:00 True
A 2020-01-04 00:00:00 True
B 2020-01-03 00:00:00 True
C 2020-01-03 00:00:00 False
C 2020-01-04 00:00:00 True
我想在每天结束时统计启用客户的数量。如果客户已启用,它将在接下来的几天内保持启用状态,除非以后有 enabled==False 行。预期的输出是:
day count_enabled_customers
2020-01-01 1 # A
2020-01-02 0 # A has been disabled
2020-01-03 2 # A, B
2020-01-04 3 # A, B, C
有人知道如何进行此操作吗?提前非常感谢!
【问题讨论】:
-
对于第
2020-01-04天,计数不应该是 2 (A,C) 吗? -
@Sushanth 客户 B 于 '2020-01-03' 启用,之后并未禁用,因此如果有意义的话,他将在接下来的几天保持启用状态