我正在尝试使用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
答案 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)
好吧,其中一行包含不规则数据,这使转换变得混乱。 现在可以很好地处理类型了,谢谢!