如何在python系列中处理多个日期字符串格式

如何在python系列中处理多个日期字符串格式,python,python-2.7,date,pandas,Python,Python 2.7,Date,Pandas,我有一个csv文件,我正试图在其上完成操作。我创建了一个数据框,其中有一列标题为“开始日期”,其中包含保修开始日期。我遇到的问题是日期的格式不一致。我想知道从今天的日历日期到该产品的保修开始的天数 此开始日期系列中的两个条目示例: 9/11/15 9/11/15 0:00 如何识别这些格式并相应地处理它们 不幸的是,您只需尝试每种格式即可。如果您给出一个示例格式,将尝试按照前面讨论的那样为您解析它 代码最终将看起来像: import datetime POSSIBLE_DATE_FO

我有一个csv文件,我正试图在其上完成操作。我创建了一个数据框,其中有一列标题为“开始日期”,其中包含保修开始日期。我遇到的问题是日期的格式不一致。我想知道从今天的日历日期到该产品的保修开始的天数

此开始日期系列中的两个条目示例:

9/11/15
9/11/15 0:00

如何识别这些格式并相应地处理它们

不幸的是,您只需尝试每种格式即可。如果您给出一个示例格式,将尝试按照前面讨论的那样为您解析它

代码最终将看起来像:

import datetime    

POSSIBLE_DATE_FORMATS = ['%m/%d/%Y', '%Y/%m/%d', etc...] # all the formats the date might be in

for date_format in POSSIBLE_DATE_FORMATS :
    try:
        parsed_date = datetime.strptime(raw_string_date, date_format) # try to get the date
        break # if correct format, don't test any other formats
    except ValueError:
        pass # if incorrect format, keep trying other formats

你真的有几个选择。我不完全确定当您尝试直接加载带有“pd.read_csv”的文件时会发生什么,但是如上所述,您可以定义一组格式字符串,您可以尝试使用这些字符串来解析数据

另一种选择是将中的日期列作为字符串读取,然后自己解析。如果希望列类似于'YYYY-MM-DD',则解析字符串以仅包含该数据,然后将其保存回去,类似于

import pandas as prandas
import datetime

df = prandas.read_csv('supa_kewl_data.dis_fmt_rox', dtype={'start_date': str})

print df.head()
# we are interested in start_date

date_strs = df['start_date'].values
#YYYY-MM-DD
#012345678910
filter_date_strs = [x[0:10] for x in date_strs]
df['filter_date_strs] = filter_date_strs

# sometimes i've gotten complained at by pandas for doing this
# try doing df.loc[:,'filter_date_strs'] = filter_date_strs
# if you get some warning thing

# if you want you can convert back to date time using a 
dobjs = [datetime.datetime.strptime(x,'%Y-%m-%d') for x in filter_date_strs]
df['dobj_start_date'] = dobjs

df.to_csv('even_better_data.csv', index=False)
希望这有帮助!Pandas文档有时很粗略,查看0.16.2中的read_csv()文档让人胆战心惊。。。
图书馆本身是一流的

不确定这是否有帮助,但当我在excel文件上使用Pandas并希望日期格式为“mm/dd/yyyy”或其他格式时,我就是这么做的

writer = pd.ExcelWriter(filename, engine='xlsxwriter', datetime_format='mm/dd/yyyy')
df.to_excel(writer, sheetname)
也许它会与:
df.to_csv

请显示您的代码。解释代码中到底有什么不起作用。发布从堆栈跟踪接收到的完整错误消息。另外,请阅读以下内容:由于
format
是一个保留名称,因此我将使用不同的变量名称。我会选择
可能的日期格式
日期格式
。没问题;)。顺便说一下,您没有更改
可能的\u格式
变量名