如何将其格式化为 pandas 中的日期?
How can I format this into a date in pandas?
26JAN2015:14:42:03
如何将 pandas 中的数据正确格式化为日期?我在原始文件中有两列具有这种格式,我需要它们是最新的,这样我就可以减去它们的值来测量两者之间的时间。
此外,用于快速完整性检查。当我处理日期(通常来自 Excel 或 .csv 文件)时,我使用的代码如下:
df['Start']= pd.to_datetime(df['Start'], coerce = True)
df['Date'] = df['Start'].apply(lambda x:x.date().strftime('%Y-%m-%d'))
df['TimeDelta'] = ((df['Start'] - df['End']).astype('timedelta64[s]'))/86400
首先,我执行 pd.to_datetime 将对象数据更改为日期格式,然后我通常使用 lambda 命令将格式切换为 ISO 标准。我还减去两个日期列以获得之间的时间并除以 86400 秒以将其转换为天数。这些是最有效的命令吗?
调用to_datetime
并传递格式字符串:
In [114]:
df = pd.DataFrame({'date':['26Jan2015:14:42:03']})
df['date'] = pd.to_datetime(df['date'], format='%d%b%Y:%H:%M:%S')
df.info()
<class 'pandas.core.frame.DataFrame'>
Int64Index: 1 entries, 0 to 0
Data columns (total 1 columns):
date 1 non-null datetime64[ns]
dtypes: datetime64[ns](1)
memory usage: 16.0 bytes
In [115]:
df
Out[115]:
date
0 2015-01-26 14:42:03
另一种变体是使用正则表达式
import re
dat = "26JAN2015:14:42:03"
dat = re.match("(\d+)(\D+)(\d+):(\d+):(\d+):(\d+)", dat)
print dat.groups()
>>> ('26', 'JAN', '2015', '14', '42', '03')
26JAN2015:14:42:03
如何将 pandas 中的数据正确格式化为日期?我在原始文件中有两列具有这种格式,我需要它们是最新的,这样我就可以减去它们的值来测量两者之间的时间。
此外,用于快速完整性检查。当我处理日期(通常来自 Excel 或 .csv 文件)时,我使用的代码如下:
df['Start']= pd.to_datetime(df['Start'], coerce = True)
df['Date'] = df['Start'].apply(lambda x:x.date().strftime('%Y-%m-%d'))
df['TimeDelta'] = ((df['Start'] - df['End']).astype('timedelta64[s]'))/86400
首先,我执行 pd.to_datetime 将对象数据更改为日期格式,然后我通常使用 lambda 命令将格式切换为 ISO 标准。我还减去两个日期列以获得之间的时间并除以 86400 秒以将其转换为天数。这些是最有效的命令吗?
调用to_datetime
并传递格式字符串:
In [114]:
df = pd.DataFrame({'date':['26Jan2015:14:42:03']})
df['date'] = pd.to_datetime(df['date'], format='%d%b%Y:%H:%M:%S')
df.info()
<class 'pandas.core.frame.DataFrame'>
Int64Index: 1 entries, 0 to 0
Data columns (total 1 columns):
date 1 non-null datetime64[ns]
dtypes: datetime64[ns](1)
memory usage: 16.0 bytes
In [115]:
df
Out[115]:
date
0 2015-01-26 14:42:03
另一种变体是使用正则表达式
import re
dat = "26JAN2015:14:42:03"
dat = re.match("(\d+)(\D+)(\d+):(\d+):(\d+):(\d+)", dat)
print dat.groups()
>>> ('26', 'JAN', '2015', '14', '42', '03')