Вопрос
См. Код ниже, демонстрирующий проблему. Простой pandas фрейм данных создается с одной строкой и одним столбцом, содержащим один экземпляр datetime. Как видите, вызов timestamp()
для объекта datetime возвращает 1581894000.0
. Выбор объекта datetime через фрейм данных и вызов timestamp()
дает 1581897600.0
. При использовании функции pandas apply
для вызова datetime.timestamp
в каждой строке столбца «дата» возвращаемое значение становится 1581894000.0
. Я ожидаю получить одно и то же значение timestamp
во всех ситуациях.
In[19]: d = datetime(2020, 2, 17)
In[20]: d.timestamp()
Out[20]: 1581894000.0 <----------------------------------+
In[21]: df = pd.DataFrame({'date': [d]}) |
In[22]: df |
Out[22]: |
date |
0 2020-02-17 |
In[23]: df['date'][0] |
Out[23]: Timestamp('2020-02-17 00:00:00') |
In[24]: df['date'][0].timestamp() |
Out[24]: 1581897600.0 <---------------------- These should be the same
In[25]: df['date'].apply(datetime.timestamp) |
Out[25]: |
0 1.581894e+09 |
Name: date, dtype: float64 |
In[26]: df['date'].apply(datetime.timestamp)[0] |
Out[26]: 1581894000.0 <----------------------------------+
Редактировать
Благодаря вводу @ALollz, используя to_datetime
и Timestamp
из pandas , как показано ниже, похоже, это решает проблему.
In[15]: d = pd.to_datetime(datetime(2020,2,17))
In[16]: d.timestamp()
Out[16]: 1581897600.0
In[17]: df = pd.DataFrame({'date': [d]})
In[18]: df
Out[18]:
date
0 2020-02-17
In[19]: df['date'][0]
Out[19]: Timestamp('2020-02-17 00:00:00')
In[20]: df['date'][0].timestamp()
Out[20]: 1581897600.0
In[21]: df['date'].apply(pd.Timestamp.timestamp)
Out[21]:
0 1.581898e+09
Name: date, dtype: float64
In[22]: df['date'].apply(pd.Timestamp.timestamp)[0]
Out[22]: 1581897600.0