将日期(excel格式)的数字表示转换为python日期和时间,然后将它们拆分为pandas中的两个单独的dataframe列

yos*_*rry 4 python date pandas

我正在电子表格中导入一些数据.它位于数据框中,但日期采用数字表示或格式

41516.43
Run Code Online (Sandbox Code Playgroud)

首先,我想将其转换为日期和时间对象

date_val = 30/08/2013  10:13:26 AM
Run Code Online (Sandbox Code Playgroud)

然后我想分别将date_val分成日期和时间,并将它们放在我的数据框中的单独列中(df)

| **original date** | **date**     | **time** | 
41516.43              30/08/2013      10:13:26 AM
Run Code Online (Sandbox Code Playgroud)

And*_*den 6

另一个问题拼凑而成:

In [11]: s = pd.Series([41516.43])

In [12]: from xlrd.xldate import xldate_as_tuple

In [13]: from datetime import datetime

In [14]: s.apply(lambda x: datetime(*xldate_as_tuple(x, 0)))
Out[14]:
0   2013-08-30 10:19:12
dtype: datetime64[ns]
Run Code Online (Sandbox Code Playgroud)

注意:可能是轻微差异是由于您给出的浮子的四舍五入.

以及"裸露的无座椅安全带使用自有风险"版本:

In [21]: pd.Timestamp('1899-12-30') + (pd.offsets.Day(1).nanos * s).astype(np.timedelta64)
Out[21]:
0   2013-08-30 10:19:12
dtype: datetime64[ns]
Run Code Online (Sandbox Code Playgroud)

我认为通常最好在使用时进行解析日期read_excel.