首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何根据日期时间差异来分割数据文件?

如何根据日期时间差异来分割数据文件?
EN

Stack Overflow用户
提问于 2021-05-28 09:43:24
回答 1查看 320关注 0票数 3

假设我有一个日期时间间隔为未知时间间隔的数据文件:

代码语言:javascript
运行
复制
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秒,它们将被分组到一个新的dataframe中。

我的尝试是从列check开始的。该列告诉它的行上的值和下面的值是否在15秒(GO)或超过15秒(NOGO)内分开。

我在GO之后添加一个数字的原因是为了能够区分GO的组。

代码语言:javascript
运行
复制
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)

这一过程是漫长的,而且对资源要求很高。我相信一定有更容易的方法来做到这一点。我试过申请熊猫重新取样,但没有运气。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-05-28 09:56:48

更新应答

通过pd.to_datetime.将mintime列转换为日期时间的

  1. 用0计算秒/填充NAN值的差值,并检查差值是否大于15秒。获取结果的cumsum并使用groupby .

代码语言:javascript
运行
复制
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())]

产出:

代码语言:javascript
运行
复制
[                                 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]
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67736534

复制
相关文章

相似问题

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