我对精确的时间插值有点小问题。你知道吗
一个单独的文件给了我一个类似这样的时间数组。为了清晰起见,在本例中,我对两个时间列使用相同的时间范围:
import pandas as pd
import numpy as np
df_time = pd.DataFrame({
'TIMETAG': ['13:52:41.562', '13:52:41.640', '13:52:41.749', '13:52:41.838',\
'13:52:41.948', '13:52:42.048', '13:52:42.138',\
'13:52:42.258', '13:52:42.398', '13:52:42.584', '13:52:42.584',\
'13:52:42.692', '13:52:42.879', '13:52:42.957',\
'13:52:43.066', '13:52:43.176', '13:52:43.269', '13:52:43.363',\
'13:52:43.472', '13:52:43.597', '13:52:43.722',\
'13:52:43.815', '13:52:43.987', '13:52:44.065', '13:52:44.190',\
'13:52:44.299', '13:52:44.392', '13:52:44.486',\
'13:52:44.595', '13:52:44.673', '13:52:44.798', '13:52:44.970',\
'13:52:45.001', '13:52:45.094', '13:52:45.235']})
我使用以下命令将其转换为毫秒:
timerange = pd.to_datetime(df_time['TIMETAG'])
timeit = timerange.astype('int64')//(10**6)
时间标签最初有500多行,采样率接近100毫秒,但我仍然调整它,使每个时间步正好是100毫秒
timerange = np.arange(np.amin(timeit), np.amax(timeit), 100)
我需要插入一个单独的数据帧,它已经有一个时间列,但是只有58个元素(因此采样大约低9倍)。这个数据帧必须插入到timeit数组中。你知道吗
df = pd.DataFrame({
'TIMETAG2' : ['13:52:41.562', '13:52:42.238', '13:52:42.558' ,\
'13:52:42.879', '13:52:43.176' ,\
'13:52:43.597', '13:52:44.299', '13:52:44.595' ,\
'13:52:44.970', '13:52:45.235'],
'350.0' : [13.108239, 12.398412, 13.020835, 14.030805, 13.852628 ,\
13.901151, 13.050930, 12.642002, 11.864150, 11.297425 ],
'400.0' : [22.551765, 22.186752, 22.603124, 24.662806, 24.108199 ,\
24.057507, 23.258363, 22.721349, 21.300732, 20.733452 ],
'450.0' : [32.221240, 32.621537, 32.367137, 35.565543, 34.632190 ,\
34.444403, 34.098969, 33.486451, 31.556474, 31.584678 ],
'500.0' : [33.460819, 34.410052, 33.755817, 36.839105, 35.827079 ,\
35.691536, 35.732444, 35.349296, 33.618491, 34.132295 ],
'550.0' : [ 32.423253, 33.517339, 32.708333, 35.677932, 34.682384 ,\
34.515653, 34.753437, 34.456637, 32.790737, 33.458967 ],
'600.0' : [ 28.563580, 29.187609, 28.715661, 31.343185, 30.541189 ,\
30.366380, 30.278298, 29.895978, 28.392532, 28.646102]
})
同样,我将时间列转换为毫秒:
df_timetag = pd.to_datetime(df['TIMETAG2'])
df_timeit = df_timetag.astype('int64')//(10**6)
将时间戳设置为索引,我尝试使用以下命令进行插值:
df['TIMETAG2'] = df_timeit
df1 = df.set_index('TIMETAG2')
df2 = df1.reindex(timerange)
除了第一排,df2全是南区。你知道吗
df3 = df2.interpolate(axis=0, limit_direction='both')
插值后,每列中的所有值实际上相等。你知道吗
当我使用长度为530 vs 60的时间数组(从数据帧)时,也会发生同样的情况。这是一个简单的例子。你知道吗
我的问题是:当时间范围相同,但一个数组的元素比另一个数组多得多时,如何才能成功地按时间插值?你知道吗
问题是在重新索引行-检查更正,如果你需要它。现在起作用了
如果只需要包含时间范围数组中的值的索引:
相关问题 更多 >
编程相关推荐