Я столкнулся с действительно странной «ошибкой» при применении функции с использованием map.
Это пример csv, который вы можете использовать для воспроизведения проблемы:
DATE
2017-03-12 02:59:00
2017-03-12 03:59:00
Ниже приведен код, который я использую:
import pandas as pd
import datetime
df = pd.read_csv('example.csv', parse_dates = ['DATE'])
df['TIMESTAMP_C'] = [str(x.timestamp()) for x in df['DATE']]
df['TIMESTAMP_H'] = df['DATE'].map(datetime.datetime.timestamp).map(str)
И следующий кадр выходных данных:
DATE TIMESTAMP_C TIMESTAMP_H
0 2017-03-12 02:59:00 1489287540.0 1489309140.0
1 2017-03-12 03:59:00 1489291140.0 1489309140.0
Итак, как вы можете видеть, временная метка, возвращаемая функцией карты, одинакова и неверна. Мне интересно, почему list comprehension возвращает правильные. Возможно, это не ошибка, а только то, что я делаю некоторые ошибки с функцией карты, однако мне бы очень хотелось использовать ее, поскольку она значительно ускоряет вычисления.
Обновлено: я не спрашиваю, как это сделать, я спрашиваю, почему то, как я это делаю, возвращает разные результаты
Но небольшая проблема с XY, если вы спросите меня, I would really like to use it as it speeds up the computation a lot. Вы не превзойдете производительность .astype(int64)/10**9 с этим .map.
Это правда, и я также смог это проверить. Во всяком случае, название вопроса является явным. Wrong behavior of map function не о преобразовании даты и времени. Возможно, я неправильно объяснил это, но это не ответ на этот вопрос. @ALollz






Функция карты работает нормально. Вы передаете "несвязанный" метод, принадлежащий классу datetime.datetime, то есть datetime.datetime.timestamp, и вы передаете ему некоторый объект pandas._libs.tslibs.timestamps.Timestamp. Вы не должны ожидать, что это сработает, и я удивлен, что это не выдает ошибку.
Скорее вы хотите использовать метод .timestamp класса pd.TimeStamp, поэтому:
In [3]: df.DATE.map(pd.Timestamp.timestamp).map(str)
Out[3]:
0 1489287540.0
1 1489291140.0
Name: DATE, dtype: object
Я действительно не вижу дубликата. Я знаю, как преобразовать дату в метку времени, я спрашиваю, почему это неправильно с картой @ALollz