gpt4 book ai didi

python - 如何根据日期时间差异拆分数据框?

转载 作者:行者123 更新时间:2023-12-04 03:25:15 25 4
gpt4 key购买 nike

假设我有这个数据框,日期时间由未知时间间隔分隔:

data[0]:
mintime check
1375 2020-02-18 12:17:51.275000064+00:00 GO1
1376 2020-02-18 12:17:56.484999936+00:00 GO1
1377 2020-02-18 12:18:06.020000+00:00 GO1
1378 2020-02-18 12:18:10.922000128+00:00 NOGO
1379 2020-02-18 14:47:48.353999872+00:00 GO2
1380 2020-02-18 14:47:48.768000+00:00 GO2
1381 2020-02-18 14:48:03.120000+00:00 GO2

我正在尝试拆分数据框。也就是说,如果日期时间之间的间隔不超过 15 秒,它们将被分组到一个新的数据框中。

我尝试这样做是从 check 列开始的。该列表明其行上的值和后续值是在 15 秒内 (GO) 还是超过 15 秒 (NOGO) 分开。

之所以在GO后面加一个数字是为了能够区分GO的组别。这是我的尝试代码:

databds = []
intervalo = pd.Timedelta(seconds = 15)
p = 0
for x in range(0,len(data)):
for y in range(0,len(data[x])-1):
t = pd.to_datetime(data[x]['mintime'][y][0:19])
tp1 = pd.to_datetime(data[x]['mintime'][y+1][0:19])
resta = tp1 - t
if resta > intervalo:
data[x]['check'][y] = "NOGO"
p = p + 1
else:
data[x]['check'][y] = "{}{}".format("GO", p)
for z in range(0,p):
datito = data[x].loc[data[x]['check'] == "{}{}".format("GO", z)]
databds.append(datito)

这个过程很长,而且对资源要求很高。我相信一定有更简单的方法来做到这一点。我曾尝试应用 pandas resample 但没有成功。

最佳答案

更新的答案:

  1. 通过 pd.to_datetimemintime 列转换为日期时间。

  2. 以秒为单位评估差异/用 0 填充 NAN 值并检查差异是否大于 15 秒。采取cumsum 结果并使用 groupby

df.mintime = pd.to_datetime(df.mintime)
df_list = [g for k,g in df.groupby((~(df.mintime.diff().dt.total_seconds().fillna(0) < 15)).cumsum())]

输出:

[                                 mintime check
1375 2020-02-18 12:17:51.275000064+00:00 GO1
1376 2020-02-18 12:17:56.484999936+00:00 GO1
1377 2020-02-18 12:18:06.020000+00:00 GO1
1378 2020-02-18 12:18:10.922000128+00:00 NOGO,
mintime check
1379 2020-02-18 14:47:48.353999872+00:00 GO2
1380 2020-02-18 14:47:48.768000+00:00 GO2
1381 2020-02-18 14:48:03.120000+00:00 GO2]

关于python - 如何根据日期时间差异拆分数据框?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67736534/

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