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

2024-04-19 07:54:01 发布

您现在位置:Python中文网/ 问答频道 /正文

我想选择两个日期之间的数据。日期的格式是我复制的代码。我看到了很多代码,但找不到任何这种格式的代码。在

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

谢谢


Tags: 数据代码datahave格式datasetorderdate
1条回答
网友
1楼 · 发布于 2024-04-19 07:54:01

假设您正在使用pandas,并且data_have是一个数据帧,那么这里的问题是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)

印刷品

^{2}$

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

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

Pandas使用dateutil来解析日期字符串。您可以测试日期字符串是否 通过传递给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')

相关问题 更多 >