Панды - Не могу привести строку к дате - PullRequest
0 голосов
/ 15 октября 2019

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

Я храню всю эту информацию в фрейме данных с именем "df_tmp". В этом кадре данных у меня есть столбец «end_Date», в котором я хочу сохранить дату окончания из файла, который является последней строкой моего файла, но если в кадре данных у меня нет никакого значения, я хочу сохранить current_time.

Представьте, что информация из моего файла находится в следующей переменной:

string_from_my_file = 'Execution time at 2019/10/14 08:06:44'

Что мне нужно:

В случае, если в моем файле руководства нет датыпоследняя строка, которую я хочу сохранить current_time. Для этого я пытаюсь с этим кодом:

now = dt.datetime.now()
current_time = now.strftime('%H:%M:%S')
df_tmp['end_date'] = df_tmp['end_date'].fillna(current_time).apply(lambda x: x.strftime('%Y-%m-%d %H:%M:%S') if not pd.isnull(x) else pd.to_datetime(re.search("([0-9]{4}\/[0-9]{2}\/[0-9]{2}\ [0-9]{2}\:[0-9]{2}\:[0-9]{2})", str(df_tmp['string_from_my_file']))[0]))  

Однако, это дает мне следующую ошибку:

builtins.AttributeError: 'str' object has no attribute 'strftime'

Что я делаю не так?

Спасибо

1 Ответ

1 голос
/ 15 октября 2019

Попробуйте это:

df_tmp['end_date'] = df_tmp['end_date'].fillna(current_time).apply(lambda x: pd.to_datetime(x).strftime('%Y-%m-%d %H:%M:%S') if not pd.isnull(x) else pd.to_datetime(re.search("([0-9]{4}\/[0-9]{2}\/[0-9]{2}\ [0-9]{2}\:[0-9]{2}\:[0-9]{2})", str(df_tmp['string_from_my_file']))[0])) 

В этой части lambda x: pd.to_datetime(x).strftime('%Y-%m-%d %H:%M:%S' необходимо изменить x на дату и время, чтобы применить strftime().

Вероятная причина вашей ошибки: Дажеесли столбец end_date имеет тип datetime, но вы заполняете этот столбец значениями типа str. Это изменяет тип данных столбца end_date.

...