我有一个熊猫DataFrame字段,被导入为字符串格式。 它应该是一个datetime变量。 我如何将它转换为日期时间列,然后根据日期进行过滤。
例子:
使用to_datetime函数,指定格式来匹配你的数据。
to_datetime
raw_data['Mycol'] = pd.to_datetime(raw_data['Mycol'], format='%d%b%Y:%H:%M:%S.%f')
你可以使用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
可以工作,但是它会导致Python警告 一个值正试图从数据帧(DataFrame)中设置一个片的副本。 尝试使用.loc[row_indexer,col_indexer] = value代替
.loc[row_indexer,col_indexer] = value
我猜这是由于一些链索引。
如果你有一个以上的列转换,你可以做以下:
df[["col1", "col2", "col3"]] = df[["col1", "col2", "col3"]].apply(pd.to_datetime)
使用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)
节省时间:
raw_data['Mycol'] = pd.to_datetime(raw_data['Mycol'])
就像我们将对象数据类型转换为float或int。使用astype ()
raw_data['Mycol']=raw_data['Mycol'].astype('datetime64[ns]')