将Pandas Column转换为DateTime

时间:2014-11-05 17:24:34

标签: python datetime pandas

我在pandas DataFrame中有一个以字符串格式导入的字段。 它应该是一个日期时间变量。 如何将其转换为日期时间列,然后根据日期进行过滤。

示例:

  • DataFrame名称: raw_data
  • 专栏名称: Mycol
  • 值 列中的格式:' 05SEP2014:00:00:00.000'

5 个答案:

答案 0 :(得分:262)

使用to_datetime功能,指定format以匹配您的数据。

raw_data['Mycol'] =  pd.to_datetime(raw_data['Mycol'], format='%d%b%Y:%H:%M:%S.%f')

答案 1 :(得分:38)

您可以使用DataFrame方法.apply()来操作Mycol中的值:

>>> df = pd.DataFrame(['05SEP2014:00:00:00.000'],columns=['Mycol'])
>>> df
                    Mycol
0  05SEP2014:00:00:00.000
>>> import datetime as dt
>>> df['Mycol'] = df['Mycol'].apply(lambda x: 
                                    dt.datetime.strptime(x,'%d%b%Y:%H:%M:%S.%f'))
>>> df
       Mycol
0 2014-09-05

答案 2 :(得分:11)

raw_data['Mycol'] =  pd.to_datetime(raw_data['Mycol'], format='%d%b%Y:%H:%M:%S.%f')

有效,但会导致Python警告 尝试在DataFrame的切片副本上设置值。 请尝试使用.loc[row_indexer,col_indexer] = value代替

我猜这是由于某些链式索引。

答案 3 :(得分:5)

如果要转换的列不止一个,则可以执行以下操作:

df[["col1", "col2", "col3"]] = df[["col1", "col2", "col3"]].apply(pd.to_datetime)

答案 4 :(得分:3)

使用pandas to_datetime函数将列解析为DateTime。另外,通过使用infer_datetime_format=True,它将自动检测格式并将提到的列转换为DateTime。

import pandas as pd
raw_data['Mycol'] =  pd.to_datetime(raw_data['Mycol'], infer_datetime_format=True)