Я работаю с фреймворком данных, который содержит некоторые значения даты. Эти значения даты содержат годы, месяцы и дни, например 1965-07-19. Теперь я пытаюсь классифицировать их по годам каждые десять лет, что означает, что 1960–1969 годы отмечены как 1960-е годы в новом столбце «Год» и так далее. Моя проблема в том, что я получаю сообщение об ошибке «<» не поддерживается между экземплярами «Timestamp» и «str» «, в то время как я преобразовал его в фрейм данных date_time pandas.
Пример моего ДФ:
что я хочу:
Код, над которым я работал:
#To datetime
df['Event.Date'] = pd.to_datetime(df['Event.Date'])
cat_date = []
for dt in df["Event.Date"]:
if dt < '1960-01-01' : cat_lft.append("1950's")
elif dt < '1970-01-01': cat_lft.append("1960's")
elif dt < '1980-01-01': cat_lft.append("1970's")
elif dt < '1990-01-01': cat_lft.append("1980's")
elif dt < '2000-01-01': cat_lft.append("1990's")
elif dt < '2010-01-01': cat_lft.append("2000's")
elif dt < '2023-01-01': cat_lft.append("2010's")
else: cat_dt.append("nan")
# List as column (append)
df["Year"] = cat_date
Кто знает, что я делал не так?
После преобразования столбца в datetime
округлите год до десятилетия и отформатируйте результат:
import pandas as pd
df = pd.DataFrame({'Event.Date': ['1961-10-24', '1972-07-19', '1989-08-02', '2022-12-26']})
df['Event.Date'] = pd.to_datetime(df['Event.Date'])
df['Year'] = (df['Event.Date'].dt.year // 10 * 10).apply(lambda x: f"{x}'s")
print(df)
Выход:
Event.Date Year
0 1961-10-24 1960's
1 1972-07-19 1970's
2 1989-08-02 1980's
3 2022-12-26 2020's
import pandas as pd
data = {'Event': {0: 0, 1: 1, 2: 2, 3: 3},
'Event.Date': {0: '1961-10-24',
1: '1972-07-19',
2: '1989-08-02',
3: '2022-12-26'}}
df = pd.DataFrame(data)
df['Event.Date'] = pd.to_datetime(df['Event.Date'])
print(df)
Event Event.Date
0 0 1961-10-24
1 1 1972-07-19
2 2 1989-08-02
3 3 2022-12-26
df['Year'] = (df['Event.Date'].dt.year // 10 * 10).astype(str) + "'s"
print(df)
Event Event.Date Year
0 0 1961-10-24 1960's
1 1 1972-07-19 1970's
2 2 1989-08-02 1980's
3 3 2022-12-26 2020's