我在Pandas数据框中有一个字段是以字符串格式导入的。它应该是一个日期时间变量。我如何将它转换为一个日期时间列,然后根据日期进行过滤。示例:
gv8xihay1#
使用to_datetime函数,指定与数据匹配的format。
to_datetime
raw_data['Mycol'] = pd.to_datetime(raw_data['Mycol'], format='%d%b%Y:%H:%M:%S.%f')
c0vxltue2#
如果要转换多列,可以执行以下操作:
df[["col1", "col2", "col3"]] = df[["col1", "col2", "col3"]].apply(pd.to_datetime)
cgh8pdjw3#
您可以使用DataFrame方法.apply()对Mycol中的值进行操作:
.apply()
>>> 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
gg0vcinb4#
使用pandas to_datetime函数将列解析为DateTime,并且通过使用infer_datetime_format=True,它将自动检测格式并将提到的列转换为DateTime。
infer_datetime_format=True
import pandas as pd raw_data['Mycol'] = pd.to_datetime(raw_data['Mycol'], infer_datetime_format=True)
yzxexxkh5#
chrisb的answer工作原理:
但是,它会导致Python警告“A value is trying to be set on a copy of a slice from a DataFrame”。请尝试改用.loc[row_indexer,col_indexer] = value我猜这是由于一些链接索引。
.loc[row_indexer,col_indexer] = value
ovfsdjhp6#
节省时间:
raw_data['Mycol'] = pd.to_datetime(raw_data['Mycol'])
lvmkulzt7#
就像我们将对象数据类型转换为float或int一样。使用astype()
raw_data['Mycol']=raw_data['Mycol'].astype('datetime64[ns]')
7条答案
按热度按时间gv8xihay1#
使用
to_datetime
函数,指定与数据匹配的format。c0vxltue2#
如果要转换多列,可以执行以下操作:
cgh8pdjw3#
您可以使用DataFrame方法
.apply()
对Mycol中的值进行操作:gg0vcinb4#
使用pandas
to_datetime
函数将列解析为DateTime,并且通过使用infer_datetime_format=True
,它将自动检测格式并将提到的列转换为DateTime。yzxexxkh5#
chrisb的answer工作原理:
但是,它会导致Python警告“A value is trying to be set on a copy of a slice from a DataFrame”。请尝试改用
.loc[row_indexer,col_indexer] = value
我猜这是由于一些链接索引。
ovfsdjhp6#
节省时间:
lvmkulzt7#
就像我们将对象数据类型转换为float或int一样。使用astype()