#python #datetime
#python #datetime
Вопрос:
1970-01-01 00:00:00.000002013
27804 1970-01-01 00:00:00.000002013
27805 1970-01-01 00:00:00.000002013
27806 1970-01-01 00:00:00.000002013
27807 1970-01-01 00:00:00.000002013
27808 1970-01-01 00:00:00.000002014
В самом правом углу вы можете видеть, что 2013 и 2014 мне нужны только те, которые указаны в моем столбце year.
Комментарии:
1. Похоже, что год 1970, а не 2013.
2. как выводится столбец datetime? если самые правые 4 цифры представляют год, что-то идет не так. ввод, похоже, равен году, а не секундам с начала эпохи.
3. Пожалуйста, покажите, что вы пробовали до сих пор. Как уже отмечалось @MrFuppes, похоже, при создании данных произошла ошибка. Чтобы понять, что требуется больше контекста.
Ответ №1:
Вы можете преобразовать свои данные в строку и выбрать последние 4 цифры.
import pandas as pd
df = pd.DataFrame([['1970-01-01 00:00:00.000002013'], ['1970-01-01 00:00:00.000002014']],columns = ['date'])
df['date'] = pd.to_datetime(df['date'])
df['date'] = df['date'].astype(str).str[-4:]
df
date
---------
0 2013
1 2014
Ответ №2:
что-то вроде этого (на этот раз мы работаем с datetime и извлекаем часть года)
import datetime
import pandas as pd
df = pd.DataFrame([{'date': datetime.datetime(2020, 5, 17),
'value': 12}, {'date': datetime.datetime(2012, 5, 17),
'value': 33}])
print(df)
df['date'] = df['date'].apply(lambda d: d.year)
print(df)
вывод
date value
0 2020-05-17 12
1 2012-05-17 33
date value
0 2020 12
1 2012 33
Комментарии:
1. Это не поможет, потому что тип данных находится в формате datetime и его нельзя разрезать.. :/
2. @wasirehman смотрите обновленный ответ — на этот раз работает с datetime.