gpt4 book ai didi

python - 如何使用 Pandas 创建一个新列来识别时间字段中的接近度?

转载 作者:行者123 更新时间:2023-11-28 16:56:56 24 4
gpt4 key购买 nike

我将以下 pandas 数据帧格式读入变量“mydataframe”下的 CSV(按 RegisterTime 排序):

Name, RegistrationID, RegisterTime
Jordan, 1, 2017-08-01T00:00:05
Jordan, 2, 2017-08-01T00:00:08
Jordan, 3, 2017-08-01T00:00:10
Sarah, 4, 2017-08-01T00:00:15
Jordan, 42, 2017-08-01T00:00:16
Sarah, 54, 2017-08-01T00:00:20
Jordan, 53, 2017-08-01T00:00:30
Jordan, 55, 2017-08-01T00:00:32

我的“RegisterTime”的数据类型是“object”,打印时显示类似这样的内容 '2017-08-01T00:00:15'

我希望能够将用户在每次操作后 10 秒内执行的类似操作“分组”到一个组中。我想这样做,以便我能够为“ActionGroup”分配一个新列,该列分配有基于此的增量值。

示例输出数据框:

Name, RegistrationID, RegisterTime, ActionGroup
Jordan, 1, 2017-08-01T00:00:05, 1
Jordan, 2, 2017-08-01T00:00:08, 1
Jordan, 3, 2017-08-01T00:00:10, 1
Sarah, 4, 2017-08-01T00:00:15, 2
Jordan, 42, 2017-08-01T00:00:16, 1
Sarah, 54, 2017-08-01T00:00:20, 2
Jordan, 53, 2017-08-01T00:00:30, 3
Jordan, 55, 2017-08-01T00:00:32, 3

解决此问题的最佳方法是什么(为数据框添加 ActionGroup 列)?

最佳答案

不是最清晰的方法,但有效:

import pandas as pd

df['RegisterTime'] = pd.to_datetime(df['RegisterTime'])
s = df.groupby('Name').apply(lambda x: x['RegisterTime'].diff().dt.seconds.fillna(0).gt(10).cumsum().astype(str) + x['Name'])
df['ActionGroup'] = df.groupby(s.droplevel(0)).ngroup() + 1
print(df)

输出:

     Name  RegistrationID        RegisterTime  ActionGroup
0 Jordan 1 2017-08-01 00:00:05 1
1 Jordan 2 2017-08-01 00:00:08 1
2 Jordan 3 2017-08-01 00:00:10 1
3 Sarah 4 2017-08-01 00:00:15 2
4 Jordan 42 2017-08-01 00:00:16 1
5 Sarah 54 2017-08-01 00:00:20 2
6 Jordan 53 2017-08-01 00:00:30 3
7 Jordan 55 2017-08-01 00:00:32 3

关于python - 如何使用 Pandas 创建一个新列来识别时间字段中的接近度?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57470982/

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