如何在python中的两个日期之间选择数据?

时间:2017-10-11 19:33:23

标签: python python-3.x pandas

我想在两个日期之间选择数据。日期的格式在我复制的代码中。我已经看过很多代码,但找不到这种格式的代码。

Dataset = Data_have[
    (Data_have['OrderDate'] >= "1SEP2007:00:00:00") & 
    (Data_have['OrderDate'] <= "31MAR2008:00:00:00")
]

由于

1 个答案:

答案 0 :(得分:2)

假设您正在使用pandas,data_have是一个DataFrame,这里的问题是pandas不会自动将'1SEP2007:00:00:00'之类的字符串识别为日期字符串:

但如果你give it a little help

,它可以
import pandas as pd

data_have = pd.DataFrame(
    {'OrderDate': pd.date_range('2007-1-1', '2009-1-1', freq='M')})

start, end = pd.to_datetime(["1SEP2007:00:00:00", "31MAR2008:00:00:00"], 
                            format='%d%b%Y:%H:%M:%S')
dataset = data_have[
    (data_have['OrderDate'] >= start) & 
    (data_have['OrderDate'] <= end)
]
print(dataset)

打印

    OrderDate
8  2007-09-30
9  2007-10-31
10 2007-11-30
11 2007-12-31
12 2008-01-31
13 2008-02-29
14 2008-03-31

上面,我还假设OrderDate包含dtype datetime64[ns]的值(解析日期,而不是日期字符串)。如果OrderDate包含日期字符串,那么您也需要解析它们:

data_have['OrderDate'] = pd.to_datetime(data_have['OrderDate'], 
                                        format='%d%b%Y:%H:%M:%S')

Pandas使用dateutil来解析日期字符串。您可以测试日期字符串是否为 通过将pandas传递给pd.Timestamp自动解析:

In [45]: pd.Timestamp("1SEP2007:00:00:00")
ValueError: could not convert string to Timestamp

然而,例如,"1 SEP2007 00:00:00"可自动解析:

In [49]: pd.Timestamp("1 SEP2007 00:00:00")
Out[49]: Timestamp('2007-09-01 00:00:00')