【发布时间】:2019-04-02 08:42:10
【问题描述】:
我有以下两个数据框:
df = pd.DataFrame({
'id': ['1', '1', '2', '3', '3', '8','4', '1', '2', '4'],
'start': ['2017-01-01', '2017-02-01', '2017-03-01', '2017-02-01', '2017-03-01', '2017-04-01', '2017-01-01', '2017-04-01', '2017-05-01', '2017-02-01'],
'end': ['2017-01-02', '2017-02-4', '2017-03-02', '2017-02-06', '2017-03-01', '2017-04-03', '2017-01-06', '2017-04-08', '2017-05-04', '2017-02-01']
})
df1 = pd.DataFrame({
'date': ['2017-01-02', '2017-02-01', '2017-03-01', '2017-02-01', '2017-03-01', '2017-04-01'],
'id': ['1', '2', '3','4', '5', '6']
})
我想从df 中提取只有df 中的id 与df1 中的id 匹配的行以及df1 中的date 与该特定id 匹配的行或介于df 中的start 和end 之间。
通过比较第二个数据帧df1 中是否存在相同的id,我可以轻松地从df 中提取id:
df_filtered = df[(df['id'].isin(df1['id']))]
但我无法将df1 的date 与start 的start 和end 进行比较。我想要的输出如下:
id start end
0 1 2017-01-01 2017-01-02
4 3 2017-03-01 2017-03-01
9 4 2017-02-01 2017-02-01
日期、开始和结束列已经采用日期时间格式 Y-M-D。任何帮助将不胜感激。
【问题讨论】:
标签: pandas dataframe python-3.5