我有两个数据帧:df1和df2,它们具有不同的长度。我想比较每个df1和df2的列“时间戳”。如果df1“时间戳”的时间早于df2的时间或与df2的时间相同,我想将df2的“最后”列添加到df1中的新列名“ fx_rate”。
我试图将“时间戳”从数据时间类型转换为时间戳类型,以便可以将整数值与这两个数据帧进行比较。
df1['timestamp'] = df1['timestamp'].values.astype(np.int64) // 10 ** 9 #convert to timestamp
df2['timestamp'] = df2['timestamp'].values.astype(np.int64) // 10 ** 9 #convert to timestamp
df1['fx_rate'] = np.nan
x = 0
for i in df1['exchange_timestamp']:
if i <= df2['timestamp'][x]:
df1['fx_rate'][x] = df2.loc[df2['timestamp'] == df2['timestamp'], 'last'].iloc[x]
elif i > df2['timestamp'][x]:
x += 1
df1['fx_rate'][x] = df2.loc[df2['timestamp'] == df2['timestamp'], 'last'].iloc[x]
结果是:
fx_rate
32.4055
NaN
NaN
NaN
不能在行中附加其他汇率。
df2 ['last']值可能必须多次添加到df1 ['fx_rate'],因为其相应的时间戳是基于小时的
例如2020-05-20 19:03:00下一个时间戳是2020-05-21 20:01:00
而df1时间戳是2020-05-20 19:03:00,接下来的几个时间戳是2020-05-20 19:03:02,2020-05-20 19:03:05,2020-05-20 19:04:00,等等。
数据输入示例:
#df1
timestamp:2020-02-03T09:22:00 #need to append 7.55 in the fx_rate column
timestamp:2020-02-03T09:23:55 #need to append 7.55 in the fx_rate column
timestamp:2020-02-03T09:24:04 #need to append 7.55 in the fx_rate column
timestamp:2020-02-03T10:20:45 #need to append 7.56 in the fx_rate column
...
#df2
timestamp:2020-02-03T09:20:57
last:7.55
timestamp:2020-02-03T10:25:05
last:7.56
希望您阅读并了解我的情况不会感到困惑,谢谢!