You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在R中按自定义日期范围筛选姓名对应的日期数据

按姓名指定日期范围筛选数据记录

处理步骤:

  • 将所有日期字段转换为可比较的datetime类型,避免字符串比较误差
  • 把主数据框和日期范围数据框按姓名关联,让每条记录匹配对应起止日期
  • 筛选出日期落在对应范围内的记录

代码实现:

import pandas as pd

# 构造主数据框df
df = pd.DataFrame({
    'Name': ['Luis']*5 + ['Pedro']*10 + ['John']*6 + ['Ingrid']*5,
    'Date': ['01/05/22','02/05/22','03/05/22','04/05/22','05/05/22',
             '01/05/22','02/05/22','03/05/22','04/05/22','05/05/22',
             '06/05/22','07/05/22','08/05/22','09/05/22','10/05/22',
             '03/05/22','04/05/22','05/05/22','06/05/22','07/05/22','08/05/22',
             '01/05/22','02/05/22','03/05/22','04/05/22','05/05/22']
})

# 构造日期范围数据框df_ranges
df_ranges = pd.DataFrame({
    'Name': ['Luis', 'Pedro', 'John', 'Ingrid'],
    'Onset': ['01/05/22', '04/05/22', '03/05/22', '01/05/22'],
    'End': ['03/05/22', '10/05/22', '06/05/22', '04/05/22']
})

# 转换日期列为datetime类型,指定格式为日/月/年
df['Date'] = pd.to_datetime(df['Date'], format='%d/%m/%y')
df_ranges['Onset'] = pd.to_datetime(df_ranges['Onset'], format='%d/%m/%y')
df_ranges['End'] = pd.to_datetime(df_ranges['End'], format='%d/%m/%y')

# 按姓名合并两个数据框
merged_df = pd.merge(df, df_ranges, on='Name')

# 筛选日期在起止范围之间的记录(包含两端)
filtered_df = merged_df[(merged_df['Date'] >= merged_df['Onset']) & (merged_df['Date'] <= merged_df['End'])]

# 保留目标列并重置索引
result = filtered_df[['Name', 'Date']].reset_index(drop=True)

# 将日期转换回原始格式
result['Date'] = result['Date'].dt.strftime('%d/%m/%y')

print(result)

输出结果:

Name      Date
0     Luis  01/05/22
1     Luis  02/05/22
2     Luis  03/05/22
3     Pedro 04/05/22
4     Pedro 05/05/22
5     Pedro 06/05/22
6     Pedro 07/05/22
7     Pedro 08/05/22
8     Pedro 09/05/22
9     Pedro 10/05/22
10    John  03/05/22
11    John  04/05/22
12    John  05/05/22
13    John  06/05/22
14   Ingrid 01/05/22
15   Ingrid 02/05/22
16   Ingrid 03/05/22
17   Ingrid 04/05/22

内容的提问来源于stack exchange,提问作者Johan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.23 04:39:26