我有一个带有日期时间(df1)的数据框。我想知道df1中'col1'中的日期时间是否在另一个数据帧(df2)中两列('lowerbound'和'upperbound')日期时间对之间。
例如:
df1 = pd.to_datetime(['2014-04-09 07:37:00','2015-04-09 07:00:00',
'2014-02-02 08:31:00','2014-03-02 08:22:00'])
df1 = pd.DataFrame(df1,columns = ['col1'])
lowerbound = pd.to_datetime(['2014-04-09 07:25:00','2014-02-02 08:30:00',
'2015-04-09 06:00:00','2014-03-02 08:12:00'])
upperbound = pd.to_datetime(['2014-04-09 07:38:00','2014-04-09 07:48:00',
'2015-04-09 08:00:00','2014-02-02 08:33:00')
df2 = pd.DataFrame(lowerbound,columns = ['lowerbound'])
df2['upperbound'] = upperbound
由于以下原因,结果应为[1,1,0,0]
谢谢!
答案 0 :(得分:2)
我相信在这种情况下您需要apply
df1.col1.apply(lambda dat: ((dat>= df2.lowerbound) & (dat <= df2.upperbound)).any())
答案 1 :(得分:2)
您可以将np.greater_than
和any
与np.less_than
和import numpy as np
print ((np.greater_equal.outer(df1.col1, df2.lowerbound)
& np.less_equal.outer(df1.col1, df2.upperbound))
.any(1).astype(int))
一起使用在轴= 1上,例如:
[1 1 1 1]
以下是您的数据{{1}}