过滤同一日期范围内的 df
Filter df within same date range
我有一份每周报告,我需要在同一列(客户 ID)中找到同一日期范围(提交日期)内发生的重复 ID。
import pandas as pd
from datetime import timedelta
df = pd.read_excel('report.xlsx', engine='openpyxl', parse_dates=['Submit Date'])
customer = report['Customer ID']
submit_date = report['Submit Date']
submit_date = submit_date.dt.date
submit_date.sort_index(inplace=True)
mask1 = customer.duplicated(keep=False) == True
report = report[mask1]
这部分很简单 - 我得到了所有重复 ID 的结果。但是,我不确定我应该如何解决将它限制在同一天的问题,例如 2021-04-12,所以我只能在这个特定日期重复。我尝试创建 for 循环,其中有 if 语句检查
if day < day + timedelta(days=1)
但这似乎没有带来任何结果。我可以对日期进行硬编码,以便为一周中的每个单独日期创建不同的掩码,但我希望保持报告自动化。
提前感谢所有想法!
我实际上设法解决了:
while start_date <= end_date:
same_date_values = report.loc[start_date == submit_date]
print(f" ################# DATE CHECKED: {start_date} #################")
mask1 = same_date_values['Customer ID'].duplicated(keep=False) == True
same_date_values = same_date_values[mask1]
df = df.append(same_date_values)
start_date += timedelta(days=1)
这是一个 while 循环,我错过了循环声明之后,但这基本上让我可以迭代每一天(12-04、13-4 等)并将其分解成具有相同的更小的数据帧日期。
我有一份每周报告,我需要在同一列(客户 ID)中找到同一日期范围(提交日期)内发生的重复 ID。
import pandas as pd
from datetime import timedelta
df = pd.read_excel('report.xlsx', engine='openpyxl', parse_dates=['Submit Date'])
customer = report['Customer ID']
submit_date = report['Submit Date']
submit_date = submit_date.dt.date
submit_date.sort_index(inplace=True)
mask1 = customer.duplicated(keep=False) == True
report = report[mask1]
这部分很简单 - 我得到了所有重复 ID 的结果。但是,我不确定我应该如何解决将它限制在同一天的问题,例如 2021-04-12,所以我只能在这个特定日期重复。我尝试创建 for 循环,其中有 if 语句检查
if day < day + timedelta(days=1)
但这似乎没有带来任何结果。我可以对日期进行硬编码,以便为一周中的每个单独日期创建不同的掩码,但我希望保持报告自动化。
提前感谢所有想法!
我实际上设法解决了:
while start_date <= end_date:
same_date_values = report.loc[start_date == submit_date]
print(f" ################# DATE CHECKED: {start_date} #################")
mask1 = same_date_values['Customer ID'].duplicated(keep=False) == True
same_date_values = same_date_values[mask1]
df = df.append(same_date_values)
start_date += timedelta(days=1)
这是一个 while 循环,我错过了循环声明之后,但这基本上让我可以迭代每一天(12-04、13-4 等)并将其分解成具有相同的更小的数据帧日期。