将Pandas列转换为DateTime

gab6jxml  于 2022-12-25  发布在  其他
关注(0)|答案(7)|浏览(157)

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

  • 数据框名称:* * 原始数据**
  • 色谱柱名称:* * 麦考**
  • 列中的值格式:* '2014年9月5日:00:00:00.000'*
gv8xihay

gv8xihay1#

使用to_datetime函数,指定与数据匹配的format

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

c0vxltue2#

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

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

cgh8pdjw3#

您可以使用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
gg0vcinb

gg0vcinb4#

使用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)
yzxexxkh

yzxexxkh5#

chrisbanswer工作原理:

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

但是,它会导致Python警告“A value is trying to be set on a copy of a slice from a DataFrame”。请尝试改用.loc[row_indexer,col_indexer] = value
我猜这是由于一些链接索引。

ovfsdjhp

ovfsdjhp6#

节省时间:

raw_data['Mycol'] =  pd.to_datetime(raw_data['Mycol'])
lvmkulzt

lvmkulzt7#

就像我们将对象数据类型转换为float或int一样。使用astype()

raw_data['Mycol']=raw_data['Mycol'].astype('datetime64[ns]')

相关问题