gpt4 book ai didi

python - 获取 groupby 的值计数和日期

转载 作者:行者123 更新时间:2023-12-05 02:25:59 25 4
gpt4 key购买 nike

我有一个看起来像这样的数据框:

df = pd.DataFrame(
[[1,'A','X','1/2/22 12:00:00AM'],
[1,'A','X','1/3/22 12:00:00AM'],
[1,'A','X','1/1/22 12:00:00AM'],
[1,'A','X','1/2/22 1:00:00AM'],
[1,'B','Y','1/1/22 1:00:00AM'],
[2,'A','Z','1/2/22 12:00:00AM'],
[2,'A','Z','1/1/22 12:00:00AM'],
columns=['ID', 'Category', 'Site', 'Task Completed'])
<表类="s-表"><头>身份证类别网站任务完成<正文>1一个X1/2/22 凌晨 12:00:001一个X1/3/22 凌晨 12:00:001一个X1/1/22 凌晨 12:00:001一个X1/2/22 凌晨 1:00:001B是1/1/22 凌晨 1:00:002一个Z1/2/22 凌晨 12:00:002一个Z1/1/22 凌晨 12:00:00

如您所见,ID/类别/站点组合可以有多个任务完成日期。

我想要找到的是数据集中每个 ID/类别/站点组合的第一个(最小)任务完成日期和最后一个(最大)任务完成日期之间的时间差(以天为单位)。我还想找到每个 ID/Category/Site 组合的实例数。预期的结果看起来像这样:

<表类="s-表"><头>身份证类别网站时差实例数<正文>1一个X241B是012一个Z12

至此,我知道了如何获取时间差和值分别计数:

df['task_completed'] = pd.to_datetime(df['task_completed'], utc=True).apply(lambda x: x.date())
result = df.groupby(['id', 'category', 'site'])['task_completed'].agg(['max','min'])
result['diff'] = result['max']-result['min']
values = df.groupby(['id', 'category', 'site'])['task_completed'].value_counts()

但我不确定如何将值计数和时间差放在一起。

最佳答案

尝试:

# convert the "Task Completed" column to datetime:
df["Task Completed"] = pd.to_datetime(df["Task Completed"], dayfirst=False)


x = df.groupby(["ID", "Category", "Site"], as_index=False).agg(
**{
"Time Difference": (
"Task Completed",
lambda x: (x.max() - x.min()).days,
),
"# of instances": ("Task Completed", "count"),
}
)

print(x)

打印:

   ID Category Site  Time Difference  # of instances
0 1 A X 2 4
1 1 B Y 0 1
2 2 A Z 1 2

关于python - 获取 groupby 的值计数和日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/74116723/

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