Pandas - добавление нового столбца даты на основе анализа другого столбца даты

Я пытаюсь взять фреймворк данных Pandas, проанализировать столбец, представляющий даты, и добавить новый столбец в фрейм данных с простым форматом мм / дд / гггг.

Вот данные и библиотеки:

import pandas as pd
import datetime
from dateutil.parser import parse

df = pd.DataFrame([['row1', 'Tue Jun 16 19:05:44 UTC 2020', 'record1'], ['row2', 'Tue Jun 16 17:10:02 UTC 2020', 'record2'], ['row3', 'Fri Jun 12 17:52:37 UTC 2020', 'record3']], columns=["row", "checkin", "record"])

Собирая кусочки отсюда, я создал эту строку для синтаксического анализа и добавления нового столбца данных:

df['NewDate'] = df.apply(lambda row: datetime.date.strftime(parse(df['checkin']), "%m/%d/%Y"), axis = 1)

Но я получаю эту ошибку при запуске, может ли кто-нибудь предложить исправление или более простой способ сделать это, кажется, что это должно быть проще и питоннее, чем я нахожу

TypeError: ('Синтаксический анализатор должен быть строкой или символьным потоком, а не серией', 'произошло с индексом 0')

Спасибо за любую помощь, которую вы можете предложить.

# pandas datetime parsing
Источник
  • 0
    Три отличных ответа, спасибо, ребята.
Codelisting
за 1 против
Лучший ответ

Вы могли бы сделать это безapply

df['newDate'] = pd.to_datetime(df.checkin).dt.strftime("%m/%d/%Y")

    row                       checkin   record     newDate
0  row1  Tue Jun 16 19:05:44 UTC 2020  record1  06/16/2020
1  row2  Tue Jun 16 17:10:02 UTC 2020  record2  06/16/2020
2  row3  Fri Jun 12 17:52:37 UTC 2020  record3  06/12/2020
за 0 против

Просто измениdf['checkin'] кrow['checkin'] как показано ниже

df['NewDate'] = df.apply(lambda row: datetime.date.strftime(parse(row['checkin']), "%m/%d/%Y"), axis = 1)
Codelisting
Популярные категории
На заметку программисту