Python 使用两个数据帧比较开始日期和结束日期之间的日期
我有两个数据帧。两者都是不同的形状。 第一个数据帧:-Python 使用两个数据帧比较开始日期和结束日期之间的日期,python,pandas,datetime,join,merge,Python,Pandas,Datetime,Join,Merge,我有两个数据帧。两者都是不同的形状。 第一个数据帧:- 开始日期结束日期id 01 15/03/19 15:30 31/03/19 15:30 11 02 31/03/19 15:30 15/04/19 15:30 12 03 15/04/19 15:30 30/04/19 15:30 13 第二数据帧:- item\u id按金额购买 0 100 15/03/19 15:33 149 1 200 8/04/19 15:47 4600 2 3
开始日期结束日期id
01 15/03/19 15:30 31/03/19 15:30 11
02 31/03/19 15:30 15/04/19 15:30 12
03 15/04/19 15:30 30/04/19 15:30 13
第二数据帧:-
item\u id按金额购买
0 100 15/03/19 15:33 149
1 200 8/04/19 15:47 4600
2 300 17/04/19 15:31 8200
3 400 20/04/19 16:00 350
我想要预期的输出:-
item\u id按金额id购买
0 100 15/03/19 15:33 149 11
1 200 8/04/19 15:47 4600 12
2 300 17/04/19 15:31 8200 13
3 400 20/04/19 16:00 350 13
如何获得它的预期输出
## https://stackoverflow.com/questions/44053666/python-assign-value-to-pandas-df-if-falls-between-range-of-dates-in-another-df
s = pd.Series(df1['id'].values, pd.IntervalIndex.from_arrays(df1['start_date'], df1['end_date']))
# Map based on the date of df_a.
df2['id'] = df2['purchase_at'].map(s)
输出:-
item_id purchase_at amount id
0 100 15/03/19 15:33 149 11
1 200 8/04/19 15:47 4600 12
2 300 17/04/19 15:31 8200 13
3 400 20/04/19 16:00 350 13
以下是0.20之前的Pandas版本(不含
IntervalIndex
)的一种方法:
df2['purchase_at'] = pd.to_datetime(df2['purchase_at'], dayfirst=True)
df2.set_index('purchase_at', inplace=True)
df2['id'] = 0
for _, d in df1.iterrows(): df2.loc[d['start_date']:d['end_date'], 'id'] = d['id']
它使用。到目前为止您尝试了什么?@RMPR我尝试了多种方法,但发现了一个错误,例如:但是如何比较两个数据帧?