为了账号安全,请及时绑定邮箱和手机立即绑定

如何根据另一个数据框中的(日期)值过滤一个数据框

如何根据另一个数据框中的(日期)值过滤一个数据框

ITMISS 2021-05-18 13:13:51
我有2个数据集:df1:teamid  points  startdate  enddate1       30      2017-07-01 2018-06-302       41      2016-07-01 2017-06-303       32      2016-07-01 2017-06-30df2:teamid  date        color1       2017-01-02  red1       2018-01-02  yellow2       2017-06-05  blue3       2014-01-05  red4       2016-03-02  brown我想在df1.startdate和df1.enddate之间的匹配列df1.teamid == df2.teamid和df2.date上过滤df2。我尝试了多种变体:df2_filtered = df2[(df2['teamid'].isin(df1['teamid'])) & (df2['date'] >= df1['startdate']) & (df2['date'] <= df1['enddate'])]这给我带来了ValueError:只能比较标记相同的Series对象。我也试过了df2_filtered = df2[(df2['teamid'].isin(df1['teamid'])) & (str(df2['date']) >= df1['startdate']) & (str(df2['date']) <= df1['enddate'])]结果为0行。基于df1和df2,应该弹出匹配行(df2的第2行和第3行)。我应该如何设置过滤器,为什么最后一个选项不起作用?
查看完整描述

1 回答

?
慕的地6264312

TA贡献1817条经验 获得超6个赞

联合会


ndf = pd.merge(df,df2, on='teamid', how='outer')

ndf.loc[ndf.date.between(ndf.startdate, ndf.enddate)]


    teamid  points  startdate   enddate date    color

1   1   30.0    2017-07-01  2018-06-30  2018-01-02  yellow

2   2   41.0    2016-07-01  2017-06-30  2017-06-05  blue


查看完整回答
反对 回复 2021-05-25
  • 1 回答
  • 0 关注
  • 120 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号