如何将字符串格式的日期转换为python中的子可设置值

如何将字符串格式的日期转换为python中的子可设置值,python,pandas,datetime,Python,Pandas,Datetime,我有一列名为Date的数据,由以下格式(对象)组成 我想将其转换为datetime对象,以便使用.loc按日期进行子集设置。我看过当数据采用不同格式时所回答的问题,但我不确定当日期采用上述格式时如何回答。感谢所有的帮助。谢谢 python模块将完全满足您的需要。 在这一页的最下面有一个关于 我相信你需要的是以下形式的东西: import pandas as pd from datetime import datetime as dt # Your data. data = [ '202

我有一列名为
Date
的数据,由以下格式(对象)组成

我想将其转换为datetime对象,以便使用
.loc
按日期进行子集设置。我看过当数据采用不同格式时所回答的问题,但我不确定当日期采用上述格式时如何回答。感谢所有的帮助。谢谢

python模块将完全满足您的需要。 在这一页的最下面有一个关于

我相信你需要的是以下形式的东西:

import pandas as pd
from datetime import datetime as dt

# Your data.
data = [
    '2020-09-28 21:56:00',
    '2020-09-24 20:20:00',
    '2020-09-24 20:20:00',
    '2020-09-24 20:20:00',
    '2020-09-24 20:20:00',
    '2020-09-24 20:20:00',
    '2020-09-24 20:20:00',
    '2020-09-24 20:20:00'
    ]
# Your data: in a pandas dataframe.
df = pd.DataFrame({'Date':data})

# Iterate over the data.
datetimeObjects = []
for date in df['Date']:
    datetimeObjects.append( dt.strptime(date,'%Y-%m-%d %H:%M:%S') )
# Create a new column of datetime objects.
df['DateTimeObjects'] = datetimeObjects
或者(正如下面@David Erickson所指出的),您可以简单地:

df['Date'] = pd.to_datetime(df['Date'],format='%Y-%m-%d %H:%M:%S')
根据过滤对象的方式,您可以创建开始和结束日期,以便在以下日期之间进行搜索:

start = dt(2020,9,28)
end = dt(2020,9,30)
然后,您可以创建一个遮罩,并使用“定位”获取熊猫的信息:

mask = (df['DateTimeObjects'] > start) & (df['DateTimeObjects'] < end)
filteredData = df.loc[mask]
mask=(df['DateTimeObjects']>start)和(df['DateTimeObjects']

我希望这能帮助您入门。

好的,您可以在使用安装后使用dateutil

pip install python-dateutil
通过下面的示例,直接将字符串类型date转换为datetime对象很容易

from dateutil.parser import parse
        
def getDateTimeFromISO8601String(string):
    d = parse(string)
    return d

new_yourDtList = [getDateTimeFromISO8601String(x) for x in yourDtList]

df['Date']=pd.to_datetime(df['Date'])
应该适合您。如果不是,那么还有另一个原因是无法从您共享的数据中重现。如果有错误,请发布错误消息。您的问题有点不清楚,我刚刚意识到您已经有了一个带有“Date”列的数据框作为datetime对象了?如果是这样的话,忽略我答案的第一部分,直接进入过滤位。我以为你有一个日期时间字符串列表…即使有字符串,只要
df['Date']=pd.to_datetime(df['Date'])
就可以了。没错,你的方法比我的简单多了!另一方面。。。我不确定他最初是如何得到日期的,因为在他创建数据框架之前,我会将其转换为dt对象。从excel、csv等读取数据时,会将其解析为日期,但这不是必需的,您可以在之后执行。
from dateutil.parser import parse
        
def getDateTimeFromISO8601String(string):
    d = parse(string)
    return d

new_yourDtList = [getDateTimeFromISO8601String(x) for x in yourDtList]