如何从Excel工作表中提取日期?

时间:2019-06-13 21:08:10

标签: python excel pandas

我正在尝试使用pandas库从Excel工作表中提取日期。

data = pd.read_excel (import_file_path)
df = pd.DataFrame(data,columns = ['birthday'])

这行得通,但是我真的不知道如何使用DataFrames,我只需要一个年龄列表/数组,所以我试图将其转换为numpy数组:

array = df.to_numpy()

这也可以正常工作,但是数组的元素如下:

[datetime.datetime(1983, 6, 4, 0, 0)]

但是我不能使用datetime提供的方法来转换日期。

最终获得年龄列表/数组的最佳方法是什么?

更新:

               Birthday
1   2002-03-15 00:00:00
2   1999-04-17 00:00:00
3   1993-06-04 00:00:00
4   1997-07-04 00:00:00
5   1983-08-09 00:00:00
6   2000-01-10 00:00:00
7   1996-08-20 00:00:00
8   2003-11-06 00:00:00

2 个答案:

答案 0 :(得分:1)

假设您的日期列称为birthday,则类似于以下内容:

df = pd.DataFrame({'Birthday' : pd.date_range(start='01/01/88',end='02/02/95',freq='M')})
df['Today'] = pd.datetime(2019,6,13) # probably better to use the datetime module.
df['Years'] = (df['Today'] - df['Birthday']) / np.timedelta64(1, 'Y')
    print(df.head(5))
    Birthday    Today   Years
0   1988-01-31  2019-06-13  31.365463
1   1988-02-29  2019-06-13  31.286063
2   1988-03-31  2019-06-13  31.201188
3   1988-04-30  2019-06-13  31.119051
4   1988-05-31  2019-06-13  31.034176

然后只需将col转换为np.array

 a = np.array(df['Years'])
    print(a)
    array([31.36546267, 31.28606337, 31.20118825, 31.11905104, 31.03417592,
       30.95203871, 30.8671636 , 30.78228848, 30.70015127, 30.61527615,
       30.53313894, 30.44826382, 30.36338871, 30.28672731, 30.20185219,
       30.11971498, 30.03483987, 29.95270266, 29.86782754, 29.78295242]

答案 1 :(得分:0)

好吧,其中一行包含不规则数据,这使转换变得混乱。 现在可以很好地处理类型了,谢谢!