栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

基于两个其他日期之间的日期合并两个数据框,但没有公共列

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

基于两个其他日期之间的日期合并两个数据框,但没有公共列

创建日期时间的数据和格式:

df_A = pd.Dataframe({'start_date':['2017-03-27','2017-01-10'],'end_date':['2017-04-20','2017-02-01']})df_B = pd.Dataframe({'event_date':['2017-01-20','2017-01-27'],'price':[100,200]})df_A['end_date'] = pd.to_datetime(df_A.end_date)df_A['start_date'] = pd.to_datetime(df_A.start_date)df_B['event_date'] = pd.to_datetime(df_B.event_date)

创建键进行交叉连接:

df_A = df_A.assign(key=1)df_B = df_B.assign(key=1)df_merge = pd.merge(df_A, df_B, on='key').drop('key',axis=1)

筛选出在开始日期和结束日期之间不符合事件日期条件的记录:

df_merge = df_merge.query('event_date >= start_date and event_date <= end_date')

加入原始日期范围表并放下关键列

df_out = df_A.merge(df_merge, on=['start_date','end_date'], how='left').fillna('').drop('key', axis=1)print(df_out)

输出:

   end_datestart_dateevent_date price0  2017-04-20 00:00:00  2017-03-27 00:00:00     1  2017-02-01 00:00:00  2017-01-10 00:00:00  2017-01-20 00:00:00   1002  2017-02-01 00:00:00  2017-01-10 00:00:00  2017-01-27 00:00:00   200


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/669046.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号