字符串格式的时间:python

时间:2016-08-08 09:26:30

标签: python string datetime pandas dataframe

我正在使用一个函数来使我的日期在列中保持一致,就像这样

[(Period((2016, 7)), 112), (Period((2016, 8)), 231)]

所以,如果我将它用作,它可以正常工作

from dateutil.parser import parse
def dateconv1(x):
   c = parse(x)
   return c

但是当我把它传递给像这样的变量

In[15]:dateconv1("1 / 22 / 2016 15:03")
Out[15]:datetime.datetime(2016, 1, 22, 15, 3)

它不起作用,所以如何将它用引号或字符串表示,每一个帮助都会得到赏识

2 个答案:

答案 0 :(得分:1)

假设you are talking about pandas dataset,您可以使用pandas to_datetime()方法:

In [66]: dates = ['1 / 22 / 2016 15:03', 'Jul 22 2016 12:32PM', 'Jul 22 2016 5:40PM',
   ....:          'Jul 22 2016 8:31PM', 'Jul 23 2016 2:01PM', 'Jul 23 2016 7:24PM',
   ....:          'Jul 24 2016 4:30PM', 'Aug 1 2016 4:00PM', 'Aug 1 2016 7:49PM']

In [67]: df = pd.DataFrame({'d':dates})

In [68]: df.dtypes
Out[68]:
d    object
dtype: object

d object - 表示d列是字符串(对象)dtype

In [69]: df
Out[69]:
                     d
0  1 / 22 / 2016 15:03
1  Jul 22 2016 12:32PM
2   Jul 22 2016 5:40PM
3   Jul 22 2016 8:31PM
4   Jul 23 2016 2:01PM
5   Jul 23 2016 7:24PM
6   Jul 24 2016 4:30PM
7    Aug 1 2016 4:00PM
8    Aug 1 2016 7:49PM

让我们将其转换为datetime dtype:

In [70]: df.d = pd.to_datetime(df.d)

In [71]: df
Out[71]:
                    d
0 2016-01-22 15:03:00
1 2016-07-22 12:32:00
2 2016-07-22 17:40:00
3 2016-07-22 20:31:00
4 2016-07-23 14:01:00
5 2016-07-23 19:24:00
6 2016-07-24 16:30:00
7 2016-08-01 16:00:00
8 2016-08-01 19:49:00

再次检查dtype:

In [72]: df.dtypes
Out[72]:
d    datetime64[ns]
dtype: object

答案 1 :(得分:0)

您拥有的不是定义Python变量的有效语法。您应该使用''""换行以使其成为字符串:

a = "1 / 22 / 2016 15:03" 
dateconv1(a)