Как безопасно преобразовать столбцы с датами, представленными в виде строк, в метки времени Unix, используя панд? - PullRequest
2 голосов
/ 02 ноября 2019

У меня есть следующий фрейм данных:

       dteday

0      2011-01-01
1      2011-01-02
2      2011-01-03
3      2011-01-04
4      2011-01-05
5      2011-01-06
6      2011-01-07
7      2011-01-08
8      2011-01-09
9      2011-01-10
10     2011-01-11
11     2011-01-12
12     2011-01-13
13     2011-01-14
14     2011-01-15
15     2011-01-16
16     2011-01-17

И я хочу преобразовать этот столбец в столбец меток времени Unix этой даты.

Я пробовал это, но столкнулся со следующей ошибкой:

df['tmstamp'] = df.dteday.astype(np.int64)

Ошибка: ValueError: invalid literal for int() with base 10: '2011-01-01'

Я не могу найти те же вопросыв любом месте. В чем проблема? Спасибо.

1 Ответ

1 голос
/ 02 ноября 2019

Похоже, ваш текущий код пытается напрямую преобразовать строку 2011-01-01 в целое число, то есть np.int64. Синтаксический анализ / преобразование не выполняется, поэтому вы видите ошибку.

Вы можете использовать метод pd.to_datetime(), чтобы сначала преобразовать строковые значения в столбце в объект datetime. ( Docs ). Затем вы можете преобразовать тип в np.int64.

С учетом следующего кадра данных:

        dates
0  2011-01-01
1  2011-01-02
2  2011-01-03
3  2011-01-04
4  2011-01-05

Попробуйте:

df['timestamp'] = pd.to_datetime(df['dates']).astype(np.int64)

Выходы:

        dates            timestamp
0  2011-01-01  1293840000000000000
1  2011-01-02  1293926400000000000
2  2011-01-03  1294012800000000000
3  2011-01-04  1294099200000000000
4  2011-01-05  1294185600000000000
...