【问题标题】:Filtering data by start date and end date in pandas python在pandas python中按开始日期和结束日期过滤数据
【发布时间】:2019-11-10 11:55:21
【问题描述】:

我有一个由列中的开始日期和结束日期组成的 Excel。

现在通过这段代码我可以过滤掉开始日期和结束日期:

       df['QC END DATE'] = pd.to_datetime(df['QC END DATE'])
       mask = (df['QC START DATE'] >= startdateEn.get()) & (df['QC END DATE'] <= endateEn.get())
       df = df.loc[mask]

但我对过滤不满意,因为它只给了我这两者之间的日期:

例如在熊猫中,如果我使用开始日期 - 2019 年 5 月 3 日和结束日期 - 2019 年 5 月 13 日

它不包括开始日期为 2019 年 4 月 25 日和结束日期 - 2019 年 5 月 10 日的条目。

如果条目的结束日期介于开始日期和结束日期之间,我希望显示此类条目

我该怎么办?

【问题讨论】:

  • startdateEn.get() 返回什么?它是一个字符串吗?时间戳?...
  • 5/13/2019 , MMDDYYYY

标签: python pandas


【解决方案1】:

您似乎想找到重叠的间隔。

也就是说 - 你的数据有起点,你的“查询”有起点, 并且您希望所有条目的间隔与您的“查询”间隔重叠(甚至轻微重叠)。

试试这个:

df['QC END DATE'] = pd.to_datetime(df['QC END DATE'])
df['QC START DATE'] = pd.to_datetime(df['QC START DATE'])
df = df[(((df['QC START DATE'] >= startdateEn.get()) & (df['QC START DATE'] <= endateEn.get())) | ((df['QC END DATE'] >= startdateEn.get()) & (df['QC END DATE'] <= endateEn.get())))]

这样我们查找QC START DATE或其QC END DATEstartdateEnendateEn之间的条目,这意味着它们重叠

【讨论】:

  • 我试过了,但它给我一个错误:文件“C:/Quality Checker/hey.py”,第 74 行,在 getreport mask = ((df['QC START DATE'] >= startdateEn.get() & df['QC 开始日期']
  • @ShernelMonteiro 我已经稍微修改了我的答案,你现在可以试试吗?
  • Nah 不起作用:typ=type(y).__name__)) TypeError: cannot compare a dtyped [datetime64[ns]] 数组与 [bool] 类型的标量
  • 我想我把括号弄混了
  • 用括号“|”分隔它们有什么关系吗??
猜你喜欢
  • 1970-01-01
  • 2017-01-15
  • 2022-12-06
  • 2018-08-19
  • 1970-01-01
  • 2012-08-19
  • 1970-01-01
  • 1970-01-01
  • 2020-10-05
相关资源
最近更新 更多