繁体   English   中英

如何将不同日期格式的字符串转换为python中的单一日期格式?

[英]how to convert sting of different date format in to single date format in python?

我有一些日期是26-07-10,而其他日期是4/8/2010,是csv中的字符串类型。 我希望它们采用单一格式,例如4/8/2010,以便我可以每年对其进行解析和分组。 python或pandas中有功能可以帮助我吗?

您可以分析利用这些日期的形式parse_dates的PARAM read_csv注但是,对于模棱两可的形式,如果你用了第一天混一个月第一形式也可能会失败,例如:

In [7]:
t="""date
26-07-10
4/8/2010"""
df = pd.read_csv(io.StringIO(t), parse_dates=[0])
df

Out[7]:
        date
0 2010-07-26
1 2010-04-08

您可以使用dt.strftime通过更改字符串格式来更改显示的格式:

In [10]:
df['date'].dt.strftime('%d/%m/%Y')

Out[10]:
0    26/07/2010
1    08/04/2010
Name: date, dtype: object

确实最好将列保留为datetime ,然后可以按年份分组:

In [11]:
t="""date,val
26-07-10,23
4/8/2010,5567"""
df = pd.read_csv(io.StringIO(t), parse_dates=[0])
df

Out[11]:
        date   val
0 2010-07-26    23
1 2010-04-08  5567

In [12]:    
df.groupby(df['date'].dt.year).mean()

Out[12]:
       val
date      
2010  2795

您可以尝试使用pd.read_csv()提到的pd.read_csv() parse-date参数。或者,您可以将它们以标准格式转换为标准格式,例如datetime.date ,如下所示:

import io
import datetime
t=u"""date
26-07-10
4/8/2010"""
df = pd.read_csv(io.StringIO(t), parse_dates=[0])
df.date.astype(datetime.date)
df

出:

    date
0   2010-07-26  
1   2010-04-08

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM