如何使此按行操作执行器(python)?

时间:2018-08-08 08:23:23

标签: python pandas

我的问题很简单,但是我无法解决这个问题: 我有两个数据框:

  1. 时间序列dataframe,其中有两列:TimestampDataValue
  2. 时间间隔dataframe,带有startend时间戳和标签

我想做什么:

在时间序列中添加第三列,以根据时间间隔yields dataframe标签。

每个timepoint都需要有一个由时间间隔dataframe指定的已分配标签。

此代码有效:

TimeSeries_labelled = TimeSeries.copy(deep=True)
TimeSeries_labelled["State"] = 0
for index in Timeintervals_States.index:
    for entry in TimeSeries_labelled.index:
         if Timeintervals_States.loc[index,"start"] <= TimeSeries_labelled.loc[entry, "Timestamp"] <=     Timeintervals_States.loc[index,"end"]:
             TimeSeries_labelled.loc[entry, "State"] = Timeintervals_States.loc[index,"state"]

但这真的很慢。我尝试使用内置于过滤器代码中的pyhton将其缩短和缩短,但失败了。 请帮忙!

1 个答案:

答案 0 :(得分:0)

我真的不了解TimeSeries,因为它包含一个包含时间戳记的数据帧作为datetime对象,您可以使用以下内容:

import pandas as pd
#Create the thrid column in the target dataframe
df_timeseries['label'] = pd.Series('',index=df_timeseries.index)
#Loop over the dataframe containing start and end timestamps
for index,row in df_start_end.iterrows():
    #Create a boolean mask to filter data
    mask = (df_timeseries['timestamp'] > row['start']) & (df_timeseries['timestamp'] < row['end']) 
    df_timeseries.loc[mask,'label'] = row['label']

这将使符合掩码条件的时间序列数据帧的行具有该行的标签,对于数据帧中包含开始和结束时间戳记的每一行