python - 如何过滤日期范围内两个数据框之间的数据?
问题描述
假设我有两个数据框 df1 和 df2 如下:
df1
Start_Date End_Date KGS
20191021 20191031 1759
20191101 20191130 36191
20191201 20191231 25953
20200101 20200131 49085
20200201 20200228 9153
df2
id scene_id origin tea_item week_commencing
0 1762333097 3279 JA AB21JA 05-01-2020
1 1762333098 3279 JA AB21JA 26-04-2020
2 1762333099 3279 JA AB21JA 09-02-2020
3 1762333100 3279 JA AB21JA 19-01-2020
4 1762333101 3279 JA AB21JA 29-12-2019
df2.week_commencing
现在我需要过滤介于df1.Start_Date
和之间的df2 数据帧df1.End_Date
解决方案
将所有 datetimelike 列转换为datetimes
,使用 cross join byDataFrame.merge
和 last filter bySeries.between
和boolean indexing
:
df1['Start_Date'] = pd.to_datetime(df1['Start_Date'], format='%Y%m%d')
df1['End_Date'] = pd.to_datetime(df1['End_Date'], format='%Y%m%d')
df2['week_commencing'] = pd.to_datetime(df2['week_commencing'])
df = df1.assign(a=1).merge(df1.assign(a=1), on='a')
df = df[df.week_commencing.between(df.Start_Date,df.End_Date)].drop('a', axis=1)
推荐阅读
- excel - 如何将公式应用于唯一具有 vba 值的单元格?
- java - Properties() 设置未按顺序保存
- json - 在 Laravel 8 中发送“Ajax 请求”时没有返回值
- java - Intellij @__(@Lazy) 找不到符号
- android - 为什么 Android Studio 的 palette 中没有出现搜索栏?
- python - 加载 JSON 文件错误:预期值:第 1 行第 1 列(字符 0)
- python - seaborn中barplot的语法无效
- reactjs - 我如何为 useEffect 和 dispatch 中的未覆盖行编写测试?
- python-3.x - 如何在 windows 的 msys2 中的 python3 中使用 pip?
- python-3.x - 什么都不写时如何为位置参数赋值?