Как извлечь даты из листа Excel? - PullRequest
1 голос
/ 14 июня 2019

Я пытаюсь извлечь даты из листа Excel с помощью библиотеки панд.

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

Это работает, но я не знаю, как работать с DataFrames, и мне просто нужен список / массив возрастов, поэтому я попытался преобразовать его в пустой массив:

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 ]

1 голос
/ 14 июня 2019

при условии, что ваш столбец дат называется 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]
0 голосов
/ 14 июня 2019

Хорошо, была строка с нерегулярными данными, которая испортила преобразование. Обработка типов теперь работает нормально, спасибо!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...