1 回答
TA贡献2021条经验 获得超8个赞
按 ['ID_System_Embed','ID_Sensor'] 作为唯一键
对df_Period和df_Sensor进行分组,然后使用 appnd 函数将其他日期列的值聚合为列表
def appnd(col):
return [d for d in col]
df_p = df_Period.copy().groupby(['ID_System_Embed', 'ID_Sensor']).agg(appnd)
df_s = df_Sensor.copy().groupby(['ID_System_Embed']).agg(appnd)
然后联接两个数据帧(可以用 0 填充 NaN)
df = df_p.join(df_s).fillna(value = 0)
df['New_Column'] = 0
df
将此函数应用于将结果映射到New_Column的日期列
def inInterval(row):
ctr = 0
for d in row[2]:
for start, end in zip(row[0], row[1]):
if start <= d <= end: ctr +=1
return ctr
df['New_Column'] = df[ ['Date_Init', 'Date_End', 'Date_Time'] ].copy()\
.apply(lambda x: inInterval(x) if type(x[2]) == list else 0, axis = 1)
df
添加回答
举报