我想创建一个基于两个数据帧的新矩阵。第一个数组df1每秒收集数据,第二个数组df2每隔30分钟收集一次数据。理想情况下,来自df2的数据将被添加到df1中,以表示正确的时间序列。在实践中,这些数据是完全不规则的,如果某些传感器被激活,这些数据就会随机出现。例如:
df1 = [['10-11', '14:21:01', '65'],
['10-11', '14:21:02', '55'],
['10-11', '14:21:03', '26'],
['12-11', '17:29:58', '89'],
['12-11', '17:29:59', '12'],
['12-11', '17:30:00', '65'],
['12-11', '17:30:01', '3'],
['12-11', '17:30:02', '66'],
['12-11', '17:30:03', '971']]
df2 = [['10-11', '14:30', '9.9','112'],
['10-11', '15:00', '7.8','165'],
['12-11', '17:00', '6.1','154'],
['12-11', '17:30', '6.2','165'],
['12-11', '18:00', '6.5','170']]
我希望对数据进行排序,例如,df1中数据在14:00:00-14:29:59之间的行将在每行中添加“9.9”和“112”的值,这与df2中的相关值相对应。其想法是,生成的数据帧将显示如下数组:
finaldf = [['10-11', '14:21:01', '65', '9.9','112'],
['10-11', '14:21:02', '55', '9.9','112'],
['10-11', '14:21:03', '26', '9.9','112'],
['12-11', '17:29:58', '89', '6.2','165'],
['12-11', '17:29:59', '12', '6.2','165'],
['12-11', '17:30:00', '65', '6.5','170'],
['12-11', '17:30:01', '3', '6.5','170'],
['12-11', '17:30:02', '66', '6.5','170'],
['12-11', '17:30:03', '971', '6.5','170']]
我很抱歉,如果这是令人费解的和任何帮助解决这个问题或指出我在正确的方向将不胜感激。你知道吗
创建日期时间索引后,可以使用
pd.merge_asof
:输出:
您可以在
df1
中创建新列,并通过迭代df2
中的行(对于大型数据帧,可以是非常慢)和使用datetime
过滤时间来填充它们。从你的例子输出
注意,在这段代码中,我将时间字符串转换成
datetime
,并调用time()
函数来获取时间。更好的方法是将整个日期和时间转换成datetime.datetime
,并将timedelta
应用于整个事情。(我无法从你的数据推断是月日还是月日。)相关问题 更多 >
编程相关推荐