首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何找到某列的最早时间戳和最新时间戳之间的时间窗口,并按另一列对其进行分组?

如何找到某列的最早时间戳和最新时间戳之间的时间窗口,并按另一列对其进行分组?
EN

Stack Overflow用户
提问于 2020-07-09 15:19:16
回答 2查看 31关注 0票数 1

我正在处理一个大型数据文件,我想要找到一列的时间窗口,从最早的时间戳到最近的时间戳,并根据另一列中的字符串进行分组。我在python和juypter中工作。

Test_Ordered_at *头衔

2020-04-07 15:06:00订单为绿色

2020-04-07 18:56:00订单为绿色

2020-04-07 15:07:00订单为绿色

2020-04-07 18:55:00订单为绿色

2020-03-07 16:55:00取消会员资格

2020-03-07 17:55:00取消会员资格

2020-03-07 18:55:00取消会员资格

结果应该是这样的:

Test_Ordered_at :标题

下午3:50:00-11:00,订单为绿色。

下午2:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00北京时间:00:00:00:00:00:00北京时间:00:00:00北京时间:00:00:00北京时间:00:00:00北京时间:00:00北京时间:00:00:00:00北京时间:00:00:00北京时间:00:00:00北京时间:00:00:00北京时间:00:00:00北京时间:00:00-11:00

下面是我的代码

代码语言:javascript
复制
import pandas as pd
from datetime import datetime
from dateutil import parser
notmiss = df 

notmiss['Test_Ordered_At'] = notmiss['Test_Ordered_At'].astype('datetime64[ns]')
print(notmiss.head())
# Add a new column instance, this adds a value to each instance 
notmiss['instance'] = 1

# set index to time, this makes df a time series df and then you can apply pandas time series functions.
tf = notmiss.set_index(notmiss['Test_Ordered_At'], drop=True, inplace=True)
EN

回答 2

Stack Overflow用户

发布于 2020-07-09 15:33:35

您可以使用np.ptp来完成此操作

代码语言:javascript
复制
import pandas as pd
import numpy as np

data = {'Test_Ordered_at': ['2020-04-07 15:06:00','2020-04-07 18:56:00','2020-04-07 15:07:00','2020-04-07 18:55:00','2020-03-07 16:55:00','2020-03-07 17:55:00','2020-03-07 18:55:00'],
'Title': ['The order is green','The order is green','The order is green','The order is green','The membership is cancelled','The membership is cancelled','The membership is cancelled']}

df = pd.DataFrame(data)

df['Test_Ordered_at'] = pd.to_datetime(df['Test_Ordered_at'])
print(df.groupby('Title')['Test_Ordered_at'].agg(np.ptp))

Title
 The membership is cancelled   02:00:00
 The order is green            03:50:00
票数 1
EN

Stack Overflow用户

发布于 2020-07-09 15:52:09

  1. 一旦到了日期时间,简单的聚合和计算

代码语言:javascript
复制
data = '''Test_Ordered_at,        Title
2020-04-07 15:06:00, The order is green
2020-04-07 18:56:00, The order is green
2020-04-07 15:07:00, The order is green
2020-04-07 18:55:00, The order is green 
2020-03-07 16:55:00, The membership is cancelled
2020-03-07 17:55:00, The membership is cancelled 
2020-03-07 18:55:00, The membership is cancelled'''
da = [[i.strip() for i in l.split(",")] for l in data.split("\n")]
da
df = pd.DataFrame(da[1:], columns=da[0])
df.Test_Ordered_at = pd.to_datetime(df.Test_Ordered_at)
df2 = df.groupby("Title")["Test_Ordered_at"].agg(["min","max"]).reset_index()
df2["Test_Ordered_at"] = df2["max"] - df2["min"]
df2.drop(columns=["min","max"])

输出

代码语言:javascript
复制
    Title   Test_Ordered_at
0   The membership is cancelled 02:00:00
1   The order is green  03:50:00
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62809451

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档