Python 熊猫数据框保留日期介于两个日期之间的行(单独的列)
我有一个数据框,看起来类似于:Python 熊猫数据框保留日期介于两个日期之间的行(单独的列),python,python-3.x,pandas,dataframe,Python,Python 3.x,Pandas,Dataframe,我有一个数据框,看起来类似于: Price From To 300€ 2020-01-01 2020-01-07 250€ 2020-01-04 2020-01-08 150€ 2020-02-01 2020-02-04 350€ 2020-02-04 2020-02-08 然后我有一个日期列表。例如:list=[2020-01-032020-02-04] 我只想保
Price From To
300€ 2020-01-01 2020-01-07
250€ 2020-01-04 2020-01-08
150€ 2020-02-01 2020-02-04
350€ 2020-02-04 2020-02-08
然后我有一个日期列表。例如:list=[2020-01-032020-02-04]
我只想保留数据框中日期介于From
列和to
列之间的行
因此,在转换之后,我将拥有以下数据帧
Price From To
300€ 2020-01-01 2020-01-07
150€ 2020-02-01 2020-02-04
350€ 2020-02-04 2020-02-08
首先,我想到将lambda与apply一起使用,但我认为这不是很有效,因为我的数据集非常大。有没有更简单的方法来处理熊猫
结果将包含在一个数据帧中让我们尝试一下
numpy广播
:
x, y = df[['From', 'To']].values.T
a = np.array(['2020-01-03', '2020-02-04'], dtype=np.datetime64)
mask = ((x[:, None] <= a) & (y[:, None] >= a)).any(1)
您能否更精确地指定日期的
列表
?是否保证每行数据帧有一个条目?或者,它是一个两元素列表,您希望将第一个元素与数据框中的From
和第二个元素toto
列进行比较?该列表包含以下格式的日期列表:年-月-日(可以是字符串类型或日期类型,如果需要,我可以转换它们)。列表中的日期与数据框中的日期具有相同的格式。数据框中没有NAN值,列表将至少包含一个日期。列表可以包含更多日期。在这个例子中,我只放了2天,但可能是3天甚至4天,好吧,那么列表中的哪个日期应该与数据框中的哪个日期进行比较?或者结果是多个数据帧,列表中的每一项对应一个数据帧?如果我看一下上面给出的示例,我会选择列表中的第一个日期,并保留该日期介于起始日期和结束日期之间的所有行。然后,我将获取列表的第二个日期,然后还保留该日期介于开始日期和结束日期之间的所有行。够清楚吗?很好的解决方案,Shubham!你得到了我的一票!谢谢@DanailPetrov节日快乐!非常感谢你,但是当我应该得到一些真实的时候,我得到的只是面具上的虚假。我不确定我是否理解最后一行(掩码=…)您能提供一点解释吗?@colla Checkdf.dtypes
From和To
列的数据类型应该是datetime64
,如果不是,您首先需要使用pd.to_datetime
将它们转换为datetime类型。.我的“收件人”和“发件人”列都转换为datetime64:df['From']=df['From'].astype('datetime64[ns]')
df[mask]
Price From To
0 300€ 2020-01-01 2020-01-07
2 150€ 2020-02-01 2020-02-04
3 350€ 2020-02-04 2020-02-08