[英]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.