#python #python-3.x #dataframe #filter #timestamp
Вопрос:
У меня есть таблица df:
date day
2021-07-25 1
2021-07-29 1
2021-07-30 1
Я хочу отфильтровать его таким образом:
df[df['device_install_date'] df['lifetime'] < '2021-07-27']
Но это приводит к ошибке:
TypeError: can only concatenate str (not "int") to str
Как я могу это сделать? значения в столбце «день» должны добавляться как дни до даты. Column day has type pandas.core.series.Series
Ответ №1:
Для этого вы должны убедиться, что используете правильные типы данных. В вашем примере я предполагаю, что столбец даты-это дата-время, поэтому для увеличения столбца даты по дням вам нужно использовать дельту времени, а затем сравнить дату с такой датой.
df = pd.DataFrame([
{'date':'2021-07-25','days':1},
{'date':'2021-07-29','days':1},
{'date':'2021-07-30','days':1}
])
df['date'] = pd.to_datetime(df['date'])
df['days'] = pd.to_timedelta(df['days'],unit='D')
query = df[(df['date'] df['days']).dt.date<pd.to_datetime('2021-07-27').date()]
print(query)