我有两个数据框,第一个是形式(注意日期是日期时间对象):
df = DataFrame('key': [0,1,2,3,4,5],
'date': [date0,date1, date2, date3, date4, date5],
'value': [0,10,20,30,40,50])
第二个是以下形式:
df2 = DataFrame('key': [0,1,2,3,4,5],
'valid_from': [date0, date0, date0, date3, date3, date3],
'valid_to': [date2, date2, date2, date5, date5, date5],
'value': [0, 100, 200, 300, 400, 500])
而且我正在尝试有效地加入键匹配的位置并且日期在valid_from和valid_to之间。我想出的是以下内容:
def map_keys(df2, key, date):
value = df2[df2['key'] == key &
df2['valid_from'] <= date &
df2['valid_to'] >= date]['value'].values[0]
return value
keys = df['key'].values
dates = df['date'].values
keys_dates = zip(keys, dates)
values = []
for key_date in keys_dates:
value = map_keys(df2, key_date[0], key_date[1])
values.append(value)
df['joined_value'] = values
虽然这似乎可以完成这项工作,但它感觉并不是一个特别优雅的解决方案。我想知道是否有人对这样的加入有更好的主意。
感谢您的帮助 - 非常感谢。