【问题标题】:Search for common datetime values in different dataframes在不同的数据框中搜索常见的日期时间值
【发布时间】:2020-11-09 13:12:48
【问题描述】:

我正在编写一个 python 脚本,我必须在其中找到不同数据帧之间的通用日期时间。 第一帧 (df_features) 是包含来自要素和日期时间窗口的数据的帧,其中索引是窗口编号。

[index, feature1, feature2, feature3, feature4,     Start,                   End]
[    1,       20,       1.5,       3,        1,  2020/04/05 11:05:15  2020/04/05  11:05:35]

所以窗口 1 的持续时间从开始到结束,每个窗口的持续时间为 20 秒。

我的第二个数据帧 (df_timestamps) 是一个带有时间戳和事件的帧。

[index, event, timestamp]
[ 1,    start rest, 2020-04-05 11:05:25]

现在我需要从 dataframe1 中搜索 dataframe2 的事件发生在哪个窗口中。通过上面的示例,您应该知道休息的开始发生在窗口 1 中,因为时间戳 2020-04-05 11:05:25 介于 2020-04-05 11:05:15 和 2020-04-05 11 之间: 05:35。 我需要编写一个代码来返回这些事件的窗口索引。我希望你能帮助我上面给出的例子 我想要类似的东西:如果 df_timestamps 中的日期时间值 == df_features 中的日期时间值,而不是返回 df_features 的索引号。

mask = df_features['Start'][0]< df_k[0][0] & df_features['End']>df_k[0][128]

我以为我必须做类似上面的事情,但我没有工作

有人可以帮我吗?

【问题讨论】:

  • 请提供清晰的例子
  • datetime 表示日期和时间 - 在第一个示例中,您只有时间,您说的时间是持续时间(这又有点不同)。在第二个示例中,您声称有一个 timestamp - 这是不清楚的。它是什么?一个约会?一次?约会时间?采用哪种格式/数据类型?要回答这个问题,需要更多详细信息和minimal reproducible example
  • 所以在第一个数据框中,我的特征值在窗口中排序,其中“开始”列给出了窗口的开始,而“结束”列给出了结束,以日期时间表示。所以这些是 20 秒的窗口。第二个数据框也是日期时间。这些日期时间记录在测量发生时的事件中。因此,当 2020/05/04 11:05:13 有片刻休息时,该事件被记录下来。现在我想搜索数据框 2 的事件发生在数据框 1 的哪个窗口中。我希望现在更清楚
  • 您可以将这些信息添加到问题中吗?另外,关于时间窗口和时间戳的关系,你不关心日期,只关心时间?

标签: python dataframe datetime


【解决方案1】:

假设你有类似的东西

import pandas as pd
df_features = pd.DataFrame({'Start': ['2020/04/05 11:05:15', '2020/04/05 11:19:15'],
                            'End':   ['2020/04/05 11:05:35', '2020/04/05 11:19:35']})

df_k = pd.DataFrame({'timestamp': ['2020-04-05 11:05:25']})

确保一切都是 datetime dtype

df_features['Start'] = pd.to_datetime(df_features['Start'])
df_features['End'] = pd.to_datetime(df_features['End'])
df_k['timestamp'] = pd.to_datetime(df_k['timestamp'])

那么时间戳列中第一个条目的比较可能如下所示

# search in which window from dataframe1 the events of dataframe2 takes place
mask = (df_features['Start'] < df_k['timestamp'].iloc[0]) & (df_features['End'] > df_k['timestamp'].iloc[0])

# df_features[mask]
#                 Start                 End
# 0 2020-04-05 11:05:15 2020-04-05 11:05:35

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-11-23
    • 1970-01-01
    • 1970-01-01
    • 2020-12-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多