pandas - 自从第一堂课最后一次见到熊猫以来的天数
问题描述
我有 pandas 数据框,我想计算自每组最后一次看到第 1 类以来的天数,并将其作为列添加到数据框中。我该怎么做?
下面的代码给出了虚拟数据:
from datetime import datetime, timedelta
import numpy as np
import pandas as pd
dates = [datetime.today() + timedelta(delta) for delta in range(20)]
dates = [datetime.strftime(date, '%Y-%m-%d')[:10] for date in dates]
df = pd.DataFrame({'date':np.repeat(dates,2),
'group':['a', 'b']*20,
'class': np.random.choice([0,1], 40)})
df['date'] = pd.to_datetime(df['date'])
df.head()
解决方案
IIUC,你可以这样做:
last_seen = (df['date'].where(df['class']==1)
.groupby(df['group'])
.ffill()
)
df['day_passed'] = df['date'] - last_seen
输出(用 生成的数据np.random.seed(1)
):
date group class day_passed
0 2020-03-17 a 1 0 days
1 2020-03-17 b 1 0 days
2 2020-03-18 a 0 1 days
3 2020-03-18 b 0 1 days
4 2020-03-19 a 1 0 days
5 2020-03-19 b 1 0 days
6 2020-03-20 a 1 0 days
7 2020-03-20 b 1 0 days
8 2020-03-21 a 1 0 days
9 2020-03-21 b 0 1 days
推荐阅读
- apache-kafka - Kafka Connect 任务未分配状态
- typescript - 您如何定义具有键字符串索引但具有特定类型的已知键的 TypeScript 接口?
- sql-server - 了解 CTE 分号放置
- botframework - 与 Microsoft Teams 集成时如何获取租户名称
- mysql - 使用 groupBy 和 where 计算数据
- sql - 我有一个带有日期列的数据框,但是在 sql server 上运行 R 脚本时它无法运行并给我这个错误
- python - Keras 模型创建占用太多内存?[卡格尔]
- python - Python:使用变量文件名格式化文件路径
- .net-core - Azure Pipelines 中每个不同项目(源)的版本控制
- reactjs - JEST 测试我的组件在 useEffect 中抛出异常