python - 根据 ID 和日期计算输入
问题描述
我有一个如下所示的数据集:
ID Date Input
1 1-Nov A
1 1-Nov B
1 2-Nov A
1 3-Nov A
1 3-Nov B
1 4-Nov B
2 1-Nov B
我希望我的输出根据样式和日期计算输入的出现,因此输出将如下所示:
ID Date Input Output
1 1-Nov A 1 ---first occurrence of A
1 1-Nov B 1 first occurrence of B
1 2-Nov A 2 Count is two because A was there for Nov1 as well
1 3-Nov A 3
1 3-Nov B 1 B is reseted to 1 since it was not present for nov2
1 4-Nov B 2
2 1-Nov B 1 Again it is 1 because ID changed from 1 to 2
谁能帮助我如何根据 ID 和日期获取项目的输出计数。
解决方案
我们用ID
+组成组Input
,GroupBy
并检查差值在哪里等于1 day
。然后我们取这些的累积和booleans
:
df['Date'] = pd.to_datetime(df['Date'], format='%d-%b')
df['temp'] = (
df.groupby(['ID', 'Input'])['Date'].diff()
.fillna(pd.Timedelta(1, unit='day')).le(pd.Timedelta(1, unit='day'))
)
df['Output'] = df.groupby(['ID', 'Input'])['temp'].cumsum().astype(int)
df = df.drop(columns='temp').assign(Date=df['Date'].dt.strftime('%d-%b'))
ID Date Input Output
0 1 01-Nov A 1
1 1 01-Nov B 1
2 1 02-Nov A 2
3 1 03-Nov A 3
4 1 03-Nov B 1
5 1 04-Nov B 2
6 2 01-Nov B 1
推荐阅读
- python - 尝试访问最后一个索引时出现索引超出范围错误
- python - 在词干提取时保持专有名词和大写单词
- wpf - 如何在绑定表达式中获取 Grid.Column 值
- python - 如何以最低的价格获得异物
- c# - 如何在不直接使用字符串的情况下在属性构造函数中指定属性路径
- ios - 使用 RxSwift 从 UITableViewCell 向 UIViewController 发送回调
- animation - 如何在颤动中制作动画卡片堆栈
- python - 有效地将 numpy 数组传递给 Matlab 函数
- database - 如何在 hive 或 mongodb 中加载非结构化数据格式
- dns - 为我自己的域设置 Firebase 托管时,我可以为 mailgun 设置 CNAME 吗?