Python 将列转换为日期时间

Python 将列转换为日期时间,python,datetime,pandas,Python,Datetime,Pandas,熊猫数据框中有一个字段是以字符串格式导入的。 它应该是一个datetime变量。 如何将其转换为datetime列,然后根据日期进行筛选 例如: 数据帧名称:原始数据 列名:mycl 价值观 列中的格式:'2014年9月5日00:00:00.000' 使用该函数,指定一个匹配数据的值 raw_data['Mycol'] = pd.to_datetime(raw_data['Mycol'], format='%d%b%Y:%H:%M:%S.%f') 使用函数,指定一个匹配数据的值 raw_d

熊猫数据框中有一个字段是以字符串格式导入的。 它应该是一个datetime变量。 如何将其转换为datetime列,然后根据日期进行筛选

例如:

  • 数据帧名称:原始数据
  • 列名:mycl
  • 价值观 列中的格式:'2014年9月5日00:00:00.000'
使用该函数,指定一个匹配数据的值

raw_data['Mycol'] =  pd.to_datetime(raw_data['Mycol'], format='%d%b%Y:%H:%M:%S.%f')
使用函数,指定一个匹配数据的值

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

您可以使用DataFrame方法对mycl中的值进行操作:

>>> 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

您可以使用DataFrame方法对mycl中的值进行操作:

>>> 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
工作,但它会导致Python警告 试图在数据帧切片的副本上设置值。 尝试改用
.loc[row\u indexer,col\u indexer]=value

我猜这是由于一些链接索引

工作,但它会导致Python警告 试图在数据帧切片的副本上设置值。 尝试改用
.loc[row\u indexer,col\u indexer]=value


我猜这是由于一些链接索引。

如果要转换多个列,可以执行以下操作:

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

如果要转换多个列,可以执行以下操作:

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

使用pandas
to_datetime
函数将列解析为datetime。此外,通过使用
expert\u datetime\u format=True
,它将自动检测格式并将所述列转换为datetime

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

使用pandas
to_datetime
函数将列解析为datetime。此外,通过使用
expert\u datetime\u format=True
,它将自动检测格式并将所述列转换为datetime

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


谢谢这很好,因为它适用范围更广,但另一个答案更直接。我很难决定我更喜欢哪个:)我更喜欢这个答案,因为它生成的是datetime对象,而不是pandas.tslib.Timestamp对象谢谢!这很好,因为它适用范围更广,但另一个答案更直接。我很难决定我更喜欢哪一个:)我更喜欢这个答案,因为它生成一个datetime对象,而不是pandas.tslib.Timestamp对象注:
format
参数不是必需的
to_datetime
是智能的。继续尝试,不要试图匹配数据。为了避免设置CopyWarning,请使用@darth behfans。如果您只想要时间而不是日期,那该怎么办?这不是非常聪明。即使某些列的格式为dayfirst=True,对于同一列中的其他列,它仍然默认为dayfirst=False。因此,使用显式格式规范或至少使用dayfirst参数更安全。忽略格式字符串可能会导致此操作速度慢,记录多。讨论原因。如果不包含格式字符串,则
infere\u datetime\u format=True
还可以将解析速度提高约5-10倍(根据熊猫文档)。注意:
format
参数不是必需的
to_datetime
是智能的。继续尝试,不要试图匹配数据。为了避免设置CopyWarning,请使用@darth behfans。如果您只想要时间而不是日期,那该怎么办?这不是非常聪明。即使某些列的格式为dayfirst=True,对于同一列中的其他列,它仍然默认为dayfirst=False。因此,使用显式格式规范或至少使用dayfirst参数更安全。忽略格式字符串可能会导致此操作速度慢,记录多。讨论原因。如果不包含格式字符串,则
infere_datetime_format=True
还可以将解析速度提高5-10倍(根据熊猫文档)。我尝试了几次,但效果很好:raw_data.loc[:,'Mycol']=pd.to_datetime(raw_data['Mycol',format='%d%b%Y:%H:%M.%S.%f')这对我有效:raw_data.loc,'Mycol]=pd.to_datetime(raw_data.loc[:,'Mycol'],format='%d%b%Y:%H:%M:%S.%f')df2.loc[:,'datetime']=pd.to_datetime(df2['datetime'])/usr/lib/python3/dist packages/pandas/core/index.py:543:SettingWithCopyWarning:试图在数据帧中的切片副本上设置值。尝试使用.loc[row_indexer,col indexer]=value改为查看文档中的警告:self.obj[item]=sTook me几次尝试,但这是有效的:raw_data.loc[:,'Mycol']=pd.to_datetime(raw_data['Mycol'],format='%d%b%Y:%H:%M:%S.%f')这对我有效:raw_data.loc[:,'Mycol]=pd.to_datetime(raw_data.loc[,'Mycol'],format='%d%b%Y:%H:%M:%S.%df2.loc[,'datetime']=pd.to_datetime(df2['datetime'])/usr/lib/python3/dist packages/pandas/core/index.py:543:SettingWithCopyWarning:SettingWithCopyWarning:试图在数据帧的切片副本上设置值。请尝试改用.loc[row_indexer,col_indexer]=value查看文档中的警告:self.obj[item]=像符咒一样工作!我需要执行以下操作来指定格式
states\u df[['from\u datetime','to\u datetime','timestamp']]。应用(lambda:pd.to\u datetime(\uu,format='%Y-%m-%d%H:%m:%S.%f',errors='concure')
工作起来像符咒TY!我需要执行以下操作来指定格式
states\u df[['from_datetime'、'to_datetime'、'timestamp']]应用(lambda:pd.to_datetime(\ux,格式=“%Y-%m-%d%H:%m:%S.%f',错误=”强制“)
合并两张或多张工作表可能会让人头疼,尤其是涉及日期时间的时候。这种推断日期时间格式节省了我大量的时间。thx酋长!很乐意帮助@Mike_Leigh!!另外,根据设置
推断日期时间格式=True
在某些情况下可以将解析速度提高~5-10倍。合并两张或更多工作表可能会让人头疼脖子,特别是涉及日期时间的时候。这种推断日期时间格式节省了我很多时间。thx酋长!很高兴帮助@Mike\u Leigh!!另外,根据