使用日期时间间隔在panda中执行实现



我有一个每分钟的示例数据如下:

datetime                       value
2021-04-10 00:01:00+00:00.      0
2021-04-10 00:02:00+00:00.      0
2021-04-10 00:03:00+00:00.      0
2021-04-10 00:04:00+00:00.      1
2021-04-10 00:05:00+00:00.      0
2021-04-10 00:06:00+00:00.      1
2021-04-10 00:07:00+00:00.      0
2021-04-10 00:08:00+00:00.      1
2021-04-10 00:09:00+00:00.      1

我想创建另一列(预期(,该列具有每3分钟对数据进行采样的逻辑,并且:a( 当采样值中至少有三个为0时,将0分配给新列b( 当为0的采样值少于三个时,分配1

预期输出应该是这样的:

datetime                       value.   expected
2021-04-10 00:03:00+00:00.     [0,0,0]    0    
2021-04-10 00:06:00+00:00.     [1,0, 1].  1
2021-04-10 00:09:00+00:00.     [0,1,1].   1

首先将值转换为日期时间,然后在3分钟内使用DataFrame.resample,将值转换成列表和日期时间的最后一个值,然后检查是否至少有一个1any,并将列转换为整数:

df['datetime'] = pd.to_datetime(df['datetime'].replace('.','', regex=True))
df = (df.resample('3Min', on='datetime', closed='right')
.agg({'value':list, 'datetime':'last'})
.reset_index(drop=True))
df = df[['datetime','value']]
df['expected'] = df['value'].apply(any).astype(int)
print (df)
datetime      value  expected
0 2021-04-10 00:03:00+00:00  [0, 0, 0]         0
1 2021-04-10 00:06:00+00:00  [1, 0, 1]         1
2 2021-04-10 00:09:00+00:00  [0, 1, 1]         1

最新更新