删除元组外部的数据框行

问题描述

我有这个元组

[('1975-01-03','1975-01-06'),('1975-01-13','1975-01-15')
 ('1975-01-31','1975-02-02'),('1975-02-03','1975-02-13'),('1975-03-09','1975-03-14'),('1975-03-14','1975-03-16'),('1975-03-26','1975-03-29'),('1975-04-8','1975-04-13'),('1975-04-22','1975-04-24'),('1975-05-4','1975-05-07')]

我想根据以下数据框编辑该元组

enter image description here

如果DST

感谢您的时间。

解决方法

具有DST的数据框

>>> a =pd.DataFrame({'DST':[33,11,2,-67,-80],'Date':['1975-01-03','1975-01-06','1975-01-07','1975-01-15']})
>>> a
   DST        Date
0   33  1975-01-03
1   11  1975-01-06
2    2  1975-01-07
3  -67  1975-01-07
4  -80  1975-01-15

您的教堂

>>> t = [('1975-01-03','1975-01-06'),('1975-01-13','1975-01-15'),('1975-01-31','1975-02-02'),('1975-02-03','1975-02-13'),('1975-03-09','1975-03-14'),('1975-03-14','1975-03-16'),('1975-03-26','1975-03-29'),('1975-04-8','1975-04-13'),('1975-04-22','1975-04-24'),('1975-05-4','1975-05-07')]

现在过滤掉DST大于-50的所有元素

>>> keep = a[a['DST'] < -50]
>>> keep
   DST        Date
3  -67  1975-01-07
4  -80  1975-01-15

迭代抛出所有有效日期,并检查它们是否在元组范围内

>>> for i in keep['Date']:
        final = []
        final = final + [j for j in t if i>=j[0] and i<=j[1]]

带有元组的最终列表

>>> final
[('1975-01-13','1975-01-15')]

请为此类数据框使用代码,以使解决您问题的数据框不需要自己生成。