gpt4 book ai didi

python - 计算每个月活跃的项目数,根据 Pandas DataFrame 中的每个项目开始和结束日期计算

转载 作者:行者123 更新时间:2023-11-28 17:06:27 25 4
gpt4 key购买 nike

假设我们有以下 DataFrame,它详细说明了错误跟踪系统中的错误:

import pandas as pd

bugs = pd.DataFrame([
{'key': 'ABC-1', 'priority': 'high', 'start': pd.Timestamp(2018, 1, 1), 'end': pd.Timestamp(2018,3,20)},
{'key': 'ABC-2', 'priority': 'med', 'start': pd.Timestamp(2018, 1, 2), 'end': pd.Timestamp(2018,1,20)},
{'key': 'ABC-3', 'priority': 'high', 'start': pd.Timestamp(2018, 2, 3), 'end': pd.Timestamp(2018,3,20)},
{'key': 'ABC-4', 'priority': 'med', 'start': pd.Timestamp(2018, 1, 4), 'end': pd.Timestamp(2018,3,20)},
{'key': 'ABC-5', 'priority': 'high', 'start': pd.Timestamp(2018, 2, 5), 'end': pd.Timestamp(2018,2,20)},
{'key': 'ABC-6', 'priority': 'med', 'start': pd.Timestamp(2018, 3, 6), 'end': pd.Timestamp(2018,3,20)}
], columns=['key', 'priority', 'start', 'end'])

这里,startend分别代表第一次发现bug的日期和关闭的日期。

我们如何按月计算“未解决”错误的数量,并按优先级分割?也就是说,输出如下所示:

           High   Med
Month
January 1 2
February 3 1
March 2 2

挑战在于同时考虑“开始”和“结束”日期。因此,在 1 月 5 日打开并在 2 月 3 日关闭的优先级“高”错误应该计入 1 月和 2 月的“高”优先级错误,而不是 3 月。等等。

最佳答案

简单而简短:)
这个想法是每月选择错误重叠的行。

months = ['January', 'February', 'March', 
'April'] # of course you can complete this list

bugs[months] = pd.concat([((bugs['start'].dt.month <= i) &
(i <= bugs['end'].dt.month)).astype(int)
for i in range(1, len(months) + 1)], axis=1)

bugs.groupby('priority')[months].sum()

结果:

          January  February  March  April
priority
high 1 3 2 0
med 2 1 2 0

关于python - 计算每个月活跃的项目数,根据 Pandas DataFrame 中的每个项目开始和结束日期计算,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50661541/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com