今天我尝试合并多个时间序列,对应于临床记录(心率、动脉压......),以进行TSfresh分析。其中一些具有相同的时间步长,另一些具有不同的时间步长,如下所示:
df1 = df1 = pd.read_csv("PATH", delimiter='\t', header=None, index_col=0)
Values
Date
06/03/2021 17:22 30
06/03/2021 17:23 30
06/03/2021 17:24 30
06/03/2021 17:25 30
06/03/2021 17:26 30
... ..
df2 = pd.read_csv("PATH", delimiter='\t', header=None, index_col=0)
Values
Date
06/03/2021 17:22 8,7
06/03/2021 17:23 8,6
06/03/2021 17:24 8,7
06/03/2021 17:25 8,6
06/03/2021 17:26 8,7
... ...
df3 = pd.read_csv("PATH", delimiter='\t', header=None, index_col=0)
Values
Date
06/03/2021 17:00 1
06/03/2021 18:00 1
06/03/2021 19:00 1
06/03/2021 20:00 3
06/03/2021 21:00 3
我做的代码合并它生成一个新的 Dataframe 如下:
new = pd.concat([df1,df2,df3], ignore_index=True, axis=1)
Values1 Values2 Values3
Date
06/03/2021 17:22 30.0 8,7 NaN
06/03/2021 17:23 30.0 8,6 NaN
06/03/2021 17:24 30.0 8,7 NaN
06/03/2021 17:25 30.0 8,6 NaN
06/03/2021 17:26 30.0 8,7 NaN
...
06/03/2021 18:00 32 9,5 1
如我们所见,df3
中只有一个变量被插入到新的 Dataframe new
中,对应于3个 Dataframe 之间的公共时间,其他行被NaN
替换。但我认为最好将NaN值替换为对应于小时的值。例如:对于values3
,与06/03/2021 17:**对应的所有行将等于1,与06/03/2021 20:**对应的所有行将等于3...,例如:
Values1 Values2 Values3
Date
06/03/2021 17:22 30.0 8,7 1
06/03/2021 17:23 30.0 8,6 1
06/03/2021 17:24 30.0 8,7 1
06/03/2021 17:25 30.0 8,6 1
06/03/2021 17:26 30.0 8,7 1
...
06/03/2021 18:00 32 9,5 1
06/03/2021 18:01 32 9,5 1
06/03/2021 18:02 32 9,5 1
...
06/03/2021 20:00 32 9,5 3
06/03/2021 20:01 32 9,5 3
06/03/2021 20:02 32 9,5 3
...
谢谢大家的帮助!
1条答案
按热度按时间g52tjvyc1#
concat
分组后,将 Dataframe 按日期时间索引(四舍五入为小时)分组,然后向前和向后填充值