将日期的数字表示(Excel格式)转为Python日期时间,并在pandas中分成两个独立的数据框列

5 投票
1 回答
4279 浏览
提问于 2025-04-17 22:15

我正在一个电子表格中导入一些数据。这些数据在一个数据框里,但日期是以数字的形式表示的。

41516.43

首先,我想把它转换成日期和时间的对象。

date_val = 30/08/2013  10:13:26 AM

然后,我想把日期和时间分开,分别放到我的数据框(df)中的不同列里。

| **original date** | **date**     | **time** | 
41516.43              30/08/2013      10:13:26 AM

1 个回答

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]

注意:你给的浮点数可能会因为四舍五入而有些许差别。

还有“不带安全带,使用风险自负”的版本:

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]

我觉得在使用read_excel时,解析日期通常是更好的选择。

撰写回答