我想在两个日期之间选择数据。日期的格式在我复制的代码中。我已经看过很多代码,但找不到这种格式的代码。
Dataset = Data_have[
(Data_have['OrderDate'] >= "1SEP2007:00:00:00") &
(Data_have['OrderDate'] <= "31MAR2008:00:00:00")
]
由于
答案 0 :(得分:2)
假设您正在使用pandas,data_have
是一个DataFrame,这里的问题是pandas不会自动将'1SEP2007:00:00:00'
之类的字符串识别为日期字符串:
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')