繁体   English   中英

获取多个值的数据框的日期和时间之间的差异

[英]Getting the difference between Date and Hours for a Data frame for multiple values

我有一个 DataFrame,其中有多个名称和多个与之关联的时间戳。 这是一个月内玩过一款游戏的玩家的数据。

在此处输入图像描述

如上所示。 这些 _id 中有重复项,因为数据来自本月的日期。

我需要知道一个人每天玩多少小时

我试图为你们制作一个示例 DataFrame 以使其更容易。

> import pandas as pd
> 
> data  = {'ids':['Kelsier', 'Kelsier', 'Saze',
> 'Val','Kelsier','Val','Val','Val','Saze','Saze','Saze','Val']
>         'ts' : ["2022-12-21 18:29:59.141", "2022-12-21 19:02:59.141", '2022-12-21 10:12:23.545', '2022-12-19 11:15:20.612',  "2022-12-22
> 01:29:59.141",  "2022-12-22 05:26:48.151",  "2022-12-22 05:28:09.543"\
>                ,  "2022-12-22 05:30:14.522",  "2022-12-23 15:14:19.231",  "2022-12-24 10:14:39.601",  "2022-12-24 11:44:34.173",
> "2022-12-24 13:12:23.566"]}
>          df = pd.DataFrame(data)
> 
> df['ts'] = pd.to_datetime(df['ts'])

我应该做什么以及如何从给定的 DataFrame 中获取我想要的数据?

我想要这样的输出:

在此处输入图像描述

这可能吗? 如果是那么怎么办???

这可能是一个解决方案。 我不确定您想如何准确计算播放的天数和小时数。 但是,如果您想获得最后一个时间戳和第一个时间戳之间的时间,您可以使用以下命令:

# Calculate timedeltas max - min
time_deltas = df.groupby('ids')['ts'].agg(lambda x: x.max() - x.min()).reset_index()

# Create day and hour column with timedelta column
time_deltas['DaysPlayed'] = time_deltas['ts'].apply(lambda x: x.days)
time_deltas['HoursPlayed'] = time_deltas['ts'].apply(lambda x: round(x.seconds/3600, 0))
time_deltas

    ids     ts                     DaysPlayed   HoursPlayed
0   Kelsier 0 days 07:00:00         0              7.0
1   Saze    3 days 01:32:10.628000  3              2.0
2   Val     5 days 01:57:02.954000  5              2.0

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM